본문 바로가기
개발자 파헤치기/개발꿀팁

[C++] 포인터(*, pointer)와 참조(&, reference)란?

by ddudidoobab 2023. 5. 19.
728x90

[ *_pointer, & _reference ]

* ) pointer

 

포인터 = 메모리의 주소를 가지고 있는 변수. 주소값을 통한 메모리 접근
int* pt1; 나 char* pt2; 처럼 사용하면 포인터변수를 선언하는 것.
int형 변수를 가르킬 수 있는 포인터 pt1이라고 읽으면 됨.

 

& ) reference
레퍼런스 = 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름.
변수에 별명을 하나 붙여주는 것. 변수 명을 통해 메모리를 참조함.
int* pt1 = &temp; 이렇게 입력하면 temp의 주소값을 포인터 pt1에 넣으라는 명령이 됨.

 

example)

int iNum = 10;
int* pPtr = &iNum;
int& rRef = iNum;
return 0;

위에처럼 입력하면

왼쪽과 같은 결과를 가져옴..!

int updates = 6;     // int형 변수를 선언
int *p_updates;     // int형을 지시하는 포인터를 선언

p_updates = &updates;     // int형의 주소를 포인터에 대입

// updates = *p_updates = 6
// &updates = p_updates = 주소값

[ ConstPtr _상수 포인터 ]

상수 포인터.


포인터 자체를 상수로 만들 수 있음. 초기화 후에 가리키는 주소를 변경할 수 없음.

const char *test =  "abcde";       // 상수 포인터 → 포인터 변수가 갖고있는 값은 변경 가능,

포인터 변수는 가리키고 있는 주소에 존재하는 값을 변경하는 것이 불가능.

 

char *const test = "12345";      // 포인터 상수 → 주소값은 고정되어 있고, 가리키는 대상체는 바뀔 수 있음.

300x250