포인터를 상수화한다?
1. 포인터 자체를 상수화시킨다라는 의미
int a=10;
int b=20;
int* const p=&a;
p=&b; // 에러
*p=30; // 이상무!
포인터가 상수화되었다는 것은 포인터 p가 지니는 주소 값을 변경할 수 없다는 뜻이다.
2. 포인터가 가리키는 변수를 상수화시킨다.
int a=10;
const int* p=&a;
*p=30; // 에러
a=30; // 이상무!
포인터p를 통해서 변수 a의 값이 변경하는 것만 막는 것이다. 이는 포인터가 p가 가리키는 것이 변수 a이므로 a가 상수화된다고 생각하기 쉽다. 그러나 a 자체가 상수화되는 것이 아니다.
int a=10;
int b=20;
const int* const p=&a;
p=&b; // 에러
*p=30; // 에러
위는 포인터와 포인터가 가리키는 변수를 동시에 상수화시켰다.
const를 사용하는 이유?
몇 천 라인이 넘는 프로그램을 작성하고 돌려보니 컴파일도 되고 오류 메세지도 보여주지 않지만 막상 실행해보면 버그가 발생되는 일이 있을 수 있다. 이런 일을 미연에 방지하기 위해 변수를 상수화 선언을 시켜 다른 함수에서 그 변수를 변경시 오류를 발생시켜 좀 더 쉽게 일을 처리할 수 있게 만든다.
'C언어 프로그래밍' 카테고리의 다른 글
숫자를 입력 받아서 각각의 개수와 합을 구하는 프로그래밍 (0) | 2009.09.15 |
---|---|
C언어 요약 내용 -2 (0) | 2009.09.15 |
C언어 요약 내용 -1 (0) | 2009.09.15 |
c언어 표준 키워드들 (0) | 2009.09.15 |
포인터란? (0) | 2009.09.15 |