카테고리 없음
[C언어] 포인터(pointer)와 상수(const)
s뽈록이s
2013. 6. 26. 14:46
void main() { int ar[5] = {1, 2, 3, 4, 5}; int *pi1 = &ar[0]; pi1++; // 포인터가 다른 대상체를 가리킬 수 있다. *pi1 = 0; // 대상체를 변경할 수 있다. const int *pi2 = &ar[0]; pi2++; // 포인터가 다른 대상체를 가리킬 수 있다. *pi2 = 0; // 에러 : 대상체가 상수이므로 변경할 수 없다. int *const pi3 = &ar[0]; pi3++; // 에러 : 포인터가 다른 대상체를 가리킬 수 없다. *pi3 = 0; // 대상체는 변경할 수 있다. const int *const pi4 = &ar[0]; pi4++; // 에러 : 포인터가 다른 대상체를 가리킬 수 없다. *pi4 = 0; // 에러 : 대상체가 상수이므로 변경할 수 없다. }
포인터를 상수(const)로 선언하면 어떻게 될까? 인자를 const로 넘기면 값을 변경시킬 수 없는 것도 위에 포함된다.
사실 내 생각에는 상수(const)와 포인터(pointer)가 같이 쓰이는 곳은 함수의 인자 밖에 없는 것 같다. 다른 상황에 사용하게 되면 헷갈릴 것 같다.
물론 모두가 포인터(pointer)와 상수(const)를 같이 사용하는데 익숙하면 좋겠지만 말이다.