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;

// at를 가리키고 있을 때, a로 원격접근 가능 즉 t대신 a쓰는 것이 가능해짐.

* 포인터는 여러개를 리턴하고 싶을 때에도 쓴다

일반 함수로는 하나로만 리턴 가능하기 때문에...( 이 내용에 대한 필기 할 예정 ) 

 

주의 1)

포인터변수를 선언만하고 초기화하지않았을 경우 포인터 안에 쓰레기값이 들어가게 된다 ex) int *p; 

그러므로 나중에 주소값을 넣더라도 문제가 발생할 수 있다 

이를 방지하고자 일반변수를 포인터변수보다 먼저 쓰는것이 좋다. 

ex) int x=10;

int *p = &x;

 

주의 2)

*p++; 하면 안된다 *p += 1로 써야한다;

*p++ 이것은 *(p++) 과 같고 이는 p 주소 값에 1을 더한다는 뜻이다