-
포인터와 역참조Coding/Tip !! 2018. 9. 19. 05:12
포인터 *
* 란 역참조(Dereference)연산자라는 의미이다.
-> 포인터 변수에는 메모리 주소가 저장되는데 이 메모리주소의 값을 가져올때 사용하는 것이 바로 역참조 연산자(*)이다.
1234567int *pointer; // 포인터 변수 선언int test =1; // test에 1을 저장pointer = &test; // test의 메모리 주소를 포인터 변수에 저장한다는 의미*pointer = 7; // 역참조 연산자를 의미함으로 test의 메모리 주소에 접근하여 7을 저장함이 경우
cout << *pointer << endl;
을 하게되면 역참조 연산자인 (*)를 사용했음으로 test의 메모리 주소에 접근하여 그 내부의 값을 가져오게된다.
역참조 연산자는 포인터 앞에 오게 되고 이 때 알아둬야할 것은
포인터는 변수의 주소만을 가리키는 것이며 주소에 접근하여 값을 가져오는 것은 역참조라는 것이다.
# 포인터는 변수의 주소만을 가리킨다.
# 역참조는 주소에 접근하여 값을 나타낸다.
포인터와 역참조 모두 *를 사용하기 때문에 헷갈릴 수 있지만
포인터는 선언시에 사용하고
이러한 포인터를 사용할 때의 *는 포인터의 메모리 주소를 역참조 하겠다는 의미로 생각하면 편하다.
역참조 연산자는 자료형을 바꾸는 기능도 가지고 있다.
예를 들어 위의 예시에서
int *point; 에서 *point처럼 역참조를 사용하면 pointer to int 에서 단순히 int가 된다.
int poiner -> int
12345678int *point;int test =2;point = test; // point 는 int pointer 형이고 test는 int임으로 경고발생*point = test;// *point는 int형이고 test도 int임으로 자료형 일치!point = &test; // point는 int pointer 형이고 &test는 int형 변수의 주소임으로 일치!(pointer of int) = (address of int)반응형'Coding > Tip !!' 카테고리의 다른 글
foo 함수 (0) 2018.09.19 Null Pointer Dereference (널 포인터 역참조) 수정중 (0) 2018.09.19 friend 키워드 사용 (0) 2018.09.19 ::연산자와 . 연산자 (0) 2018.09.19 static 변수 (0) 2018.09.18 댓글