본문 바로가기
!?/C++

c/c++ 의 꽃 포인터

by Where's my namespace 2012. 7. 5.

 

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; 같은 방식으로 해주면 된다. 

 

이렇듯 사소한 차이가 엄청 큰 의미의 차이를 가져 오기 때문에 포인터를 사용할 때는 항상 주의해서 써야한다.

 

 

 

 

 

 

 

'!? > C++' 카테고리의 다른 글

동적메모리 할당  (0) 2012.08.11
함수의 포인터  (0) 2012.08.11
함수의 재귀호출  (0) 2012.08.11
함수  (0) 2012.08.11
객체  (0) 2012.06.27