void func(int& x)
{
x = 20;
}
int main()
{
int a = 0;
func(a); // a = 20
}
void func(int* px)
{
*px = 20;
}
int main()
{
int a = 0;
func(&a); // a = 20
}
&(reference)
참조 변수 x는 main의 a 변수의 별명이 되어 a의 메모리를 공유하게 된다. 즉, 서로 부르는 이름만 다를 뿐이지 같은 주소를 공유한다.
*(pointer)
px는 int*로 포인터 타입이다. 해당 타입은 지역변수이자 매개변수이다.
참조와 다른 큰 특징은 px는 a와 주소가 다르다는 것이다. *px와 *a가 가르키는 값은 같다. 다만, px와 a의 주소는 다르다는 이야기이다.
'C++' 카테고리의 다른 글
[C++] class와 virtual (0) | 2024.05.22 |
---|---|
[C++] 포인터 참조로 전달(Pass By Reference) (0) | 2024.05.21 |