|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2846 [복사]
제가 솔루션을 찾은 것같아서 맞나 물어볼려고 물어봅니다
#include <stdio.h>
int main(void)
{
int a=10;
int b=20;
const int* p = &a;
*p=30; //error
a=30; //OK
p=&b; //OK
}
이 코드에서는 포인터가 가리키는 변수를 상수화 시키는것입니다.
*p=30; 가 에러 나는 이유는 *p의 값을 바꾸는 거라서이고
a=30 나 p=&b 가 running 되는 이유는 a=30는 *p 값이 아니라 a의 값을 바꾸는 것이기때문에 ok이고
p=&b는 포인터p가 가리키는 값이아니라 주소를 바꾸는것이기 때문에 OK
#include <stdio.h>
int main(void)
{
int a=10;
int b=20;
int* const p = &a;
p=&b; //error
*p=30; //OK
*p=b; //OK
}
여기서는 포인터 자체를 상수화 시키는 것입니다
p=&b가 에러나는 이유는 &를 이용함으로서 p의 주소를 바꾸는것이라서 안되는것이지만
*연산자를 사용하는 *p=30 나 *p=b는 포인터p의 값을 바꾸는것이기때문에 OK이다
이거 맜나요 탐정님?? |
Hit : 4958 Date : 2011/01/08 10:24
|