C++
포인터(Pointer) 기초
영카이브
2022. 6. 12. 14:52
- pointer 란?
메모리의 주소를 가지고 있는 변수
즉 포인터변수는 주소를 저장한다, 주소는 &(엠퍼센드) 로 표시
주소를 지정하는 것을 '가리킨다' 라고도 표현
ex)
int x=10;
int *p = &x;
포인터변수 int *p에 x의 주소값이 저장됨
그렇다면
p의 값은? 000000C5040FFCE4 (x의 주소값)
*p의 값은? 10
< 잠깐! 관련내용 >
컴퓨터에서 메모리는 바이트(byte)단위로 주소가 매겨져있다
이 주소를 활용해 우리는 메모리 바이트에 접근가능하다
*포인터변수는 일반변수와 달리 원격접근이 가능하다!
int t = 15;
int* a = &t;
// a가 t를 가리키고 있을 때, a로 원격접근 가능 즉 t대신 a쓰는 것이 가능해짐.

* 포인터는 여러개를 리턴하고 싶을 때에도 쓴다
일반 함수로는 하나로만 리턴 가능하기 때문에...( 이 내용에 대한 필기 할 예정 )
주의 1)
포인터변수를 선언만하고 초기화하지않았을 경우 포인터 안에 쓰레기값이 들어가게 된다 ex) int *p;
그러므로 나중에 주소값을 넣더라도 문제가 발생할 수 있다
이를 방지하고자 일반변수를 포인터변수보다 먼저 쓰는것이 좋다.
ex) int x=10;
int *p = &x;
주의 2)
*p++; 하면 안된다 *p += 1로 써야한다;
*p++ 이것은 *(p++) 과 같고 이는 p 주소 값에 1을 더한다는 뜻이다