int *&x
int *y
의 차이
x는 int 포인터에 대한 레퍼런스 타입
y는 int 포인터 타입
아래 func 함수 파라미터로 넘길 시 y는 복사본을 받을거고 x는 포인터에 대한 주소를 받게 된다.
이거는 y는 스코프 벗어 날 시 값 변화가 없지만 x는 변경된다
void func(int* p, int*& pr)
{
p++;
pr++;
}
int main()
{
int a[2];
int* b = &a[0];
int* c = &a[0];
std::cout << "\nBefore call to function:" << std::endl;
std::cout << "b = " << b << std::endl;
std::cout << "c = " << c << std::endl;
func(b, c);
std::cout << "\nAfter call to function:" << std::endl;
std::cout << "b = " << b << std::endl;
std::cout << "c = " << c << std::endl;
return 0;
}
결과
Before call to function:
b = 0xbf811a48
c = 0xbf811a48
After call to function:
b = 0xbf811a48
c = 0xbf811a4c
'프로그래밍 언어 > C++' 카테고리의 다른 글
C Call-by-Value(값에 의한 호출) & Call-by-Reference(참조에 의한 호출)의 이해 (0) | 2023.08.21 |
---|---|
[C++] 문자열 인코딩 (유니코드 멀티바이트 UTF-8 변환) (0) | 2023.08.10 |
void* 포인터 크기 (0) | 2023.07.23 |
[C++] string(문자열) 클래스 변환(atoi, c_str()) 등 정리 (0) | 2023.07.20 |
[C/C++] atoi, atof, atol 함수 (char* to int), 문자열 > 값 타입 (0) | 2023.07.20 |