프로그래밍

 3198, 1/160 회원가입  로그인  
   capt_0669
   포인터 질문 4

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



    
gamja 소스는 맞는데 말로 풀어쓰시는게 좀 미흡하신듯. 2011/01/08