본문 바로가기

포인터와 const 키워드 포인터를 상수화한다? 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 키워드에 의해서 상수화되기도 한다. 그러나 이는 변수가 상수화되는 것이다. sizeof연산자를 이용하여 포인터변수의 크기를 계산해 보면, 타입에 상관없이 그 크기가 4바이트임을 알 수 있다. 이는 컴퓨터의 주소 체계가 4바이트로 표현된다는 것을 의미한다. (과거에는 메모리 주소를 나타내는데 2바이트를 사용해서 오래된 컴파일러는 여전히 포인터를 2바이트로 처리하는 것도 있다.) 포인터 선언 int main(void){ int *a; char *b; double *c; //a라는 이름의 int형 포인.. 더보기