카테고리 없음

[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)를 같이 사용하는데 익숙하면 좋겠지만 말이다.