참조(reference)와 포인터(pointer)

포인터 T*참조 T&
의미주소를 담는 변수이미 있는 객체의 별칭(다른 이름)
비어 있음nullptr 가능참조만 쓸 때는 반드시 유효한 객체에 연결
다시 가리키기다른 객체 주소로 바꿀 수 있음한 번 붙이면 다른 객체로 못 바꿈
문법*p, p->, &x로 주소그냥 원래 이름처럼 r. 사용

포인터 예시

int x = 10;
int* p = &x;   // p는 x의 주소를 저장

*p = 20;       // x도 20으로 바뀜 (역참조)

int y = 0;
p = &y;        // 이제 p는 y를 가리킴 (재지정 가능)

p = nullptr;   // 아무것도 안 가리키게 할 수 있음

참조 예시

int x = 10;
int& r = x;    // r은 x의 별칭

r = 20;        // x도 20 (주소 적을 필요 없음)

int y = 0;
// r = y;      // 이렇게 해도 "r이 y를 가리키게" 되는 게 아니라 x에 y 값이 대입됨