c / c++ 에서 중요한 기능중 하나인 포인터!
그 개념은 너무 단순하다. 어떻게 사용하느냐에따라 골이 아파 지기도 하지만 그래도 유용하다.
단순히 생각하면 포인터는 그저 "가르키는 변수" 정도가 적당하지 않을까.
쓰임이 많은 포인터니 잘 봐두어야 한다.
포인터의 아주 간단한 예제를 보자.
int num = 123;
int* ptr = &a;
이처럼 선언 방법은 간단하다. " 변수타입* 변수명 " 순으로 선언해서 사용하면 된다. 중요한건 위 처럼 처음 바로 초기화를
해주던가. 아닐경우 int* ptr = 0; 혹 int* ptr = NULL ; 같은 방식으로 초기화 해주어야 나중에 올 큰 불상사를 막을 수
있다. 포인터를 사용하기 전에는 항상 그 변수가 초기화가 됬는지 안됬는지 확인해서 사용하는 것도 좋은 습관이라고 하니 버
릇 들이면 좋을 것 같다.
초기화가 됬는지 안됬는지 확인하는 방법은 if( 0 != ptr) 혹은 if( NULL != ptr) 혹은 if( !p ) 등과 같은 방법으로 확인 할
수 있다. 위의 세가지는 모두 같은 의미이다.
포인터는 const 속성을 부여할때도 다소 주의 해야한다.
만약 const int* p= &a; 라고 했다면 이는 p가 가르키는 변수 a의 값을 못 바꾸게 하는 의미가 된다.
int* const p = $a; 라고 했다면 이는 p가 가르키는 주소 a 를 못 바꾸게 하는 의미이다.
두가지를 다 const 로 하고 싶다면, const int* const ptr = &a; 같은 방식으로 해주면 된다.
이렇듯 사소한 차이가 엄청 큰 의미의 차이를 가져 오기 때문에 포인터를 사용할 때는 항상 주의해서 써야한다.