Const

Const  키워드의 의미!

a. const int n = 10;  // 말그대로 n의 값을 변경할 수 없다 즉 n은 언제나 10

b. const int* n; // 이것은 포인터변수의 값이 아닌 가리키는 기억공간의 값을 고정시키는 것
 

e.g.  int a=10, int b=20;

       const int *ap = &a;

       printf("변수 a의 값 : %d\n", *ap);

       ap=&b;

       printf("변수 a의 값 : %d\n", *ap);    // 이럼 결과로 머가 나올까??

       ===============================

       변수 a의 값 : 10

       변수 b의 값 : 20

 

 또 다른 예제

       int a=10;

       int *ap=&a;

       *ap=20;              // 바로 여기가 에러 포인트~~~ 값을 바꿀수 없다. (이코드는 컴파일에러)

       printf("변수 a의 값 : %d\n", *ap);

       ===============================

       여기서 잠깐 그러나 변수 a는 포인터를 통해서만 값을 못바꾸지 변수 a에 접근해서는

       값 변경이 가능하다는것~

 
c. int* const n;

위의 것과 비스무리하게 생긴 이거는 도대체 무엇을 변경할 수 없다는 소린가??

예상과 같이 n의 값을 변경할수 없단 소리 즉 포인터변수의 값을 변경할 수 없다는 뜻

e.g    int a=10, b=10;

        int * conts  ap = &a; // 초기화할때 변수의 주소를 넘겨주지 않아도 에러가 남

        ap=&b; // 바로 이게 에러포인트 포인트, 포인터 변수의 값을 바꿀 수 없다.

d. const int* const n;

이것이야 머 b,c를 보면 쉽게 이해되는 부분.