포인터 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 값이 대입됨