[PS] 포인터와 Call by reference

정재훈·2022년 3월 12일
0

Problem Solving

목록 보기
2/17
post-thumbnail

1) 포인터

포인터의 개념부터 알아보겠습니다.

포인터란?
1. 주소를 저장하는 변수
2. 주소를 저장하고 있을 때 '가리킨다'.
3. 가리킬 때 원격으로 접근 가능

사용예시

#include <iostream>
using namespace std;


int main() {
	
	int x = 15;
	char y = 'A';
	int* a = &x;
	// 포인터의 자료형은 가리키는 변수의 자료형과 동일하게 설정해줘야 한다.
	char* b = &y; 

	cout << *a <<"\n" << *b<< "\n";
	
	
	
	return 0;
}

포인터 쉽게 이해하기 : *a는 x라고 생각하고, *b는 y라 생각하기!!!

결과


2) Call by reference

Call by reference는 포인터를 응용한 개념으로, 여러 개의 리턴값을 한 함수에서 하기 위해 사용된다.

기초) 사용예시

#include <iostream>
using namespace std;

void abc(int* a) {
	*a = 10;
}

int main() {
	
	int a = 15;
    // a를 10으로 바꿔주는 함수
	abc(&a);

	cout << a <<endl;

	return 0;
}

결과

abc(&a)는 a라는 변수에 값을 담아주세요! 라고 생각하면 이해하기 편하다.

심화) 사용예시

#include <iostream>
using namespace std;

void abc(int* p1, int* p2, int a, int b) {
	*p1 = a + b; // 3 + 7 = 10
	*p2 = a * b; // 3 * 7 = 21
}

int main() {
	
	int r1, r2;
	// 하나의 함수로 2개의 변수를 return 받을 수 있다.
	abc(&r1, &r2, 3, 7);

	cout << r1 << endl;
	cout << r2 << endl;

	return 0;
}

결과

profile
여러 방향으로 접근하는 개발자

0개의 댓글