<포인터 해석하기 : 뒤에서 부터 읽어 나간다.>
int *ptr ( ptr은 + 가르킨다(*) +int형을 ) | ptr은 int형의 무언가를 가르킴 (주소를 저장하여 가르킴) ptr이 가르키는건 int형 무언가 |
int const *ptr (ptr은 + 가르킨다(*) + int const 형을) =const int *ptr |
ptr은 const int형의 무언가를 가르킴 ptr이 가르키는건 const int형 무언가 (ptr이 가르키는 건 변할 수 없음) |
int *const ptr (const ptr은 + 가르킨다(*) + int 형을) | const ptr(변하지 않는 값을 가진 ptr)은 int형의 무언가를 가르킴 const ptr이 가르키는건 int형 무언가 (ptr의 값 즉, 저장된 주소값을 변하게 할 수 없음.) |
<예제1: 상수포인터>
int a = 10; int b; const int* ptr; ptr = &a; |
*ptr = 20; >> ptr이 가르키는 값을 변경 할 수 없음 ptr = &b; >> ptr에 저장되는 주소값은 변경 할 수 있음 |
<예제2: 포인터 상수>
int a = 10; int b; int * const ptr; ptr = &a; |
*ptr = 20; >> ptr이 가르키는 값을 변경 할 수 있음 (ptr의 주소가 바뀌지 않으므로 가능) ptr = &b; >> ptr에 저장되는 주소값은 변경 할 수 없음 |
'프로그래밍 > C언어' 카테고리의 다른 글
[c언어] 구조체 선언 과 초기화 (0) | 2021.09.30 |
---|---|
[C++, C] 문자열 (0) | 2021.09.17 |
[C언어]위키백과 연산자 (0) | 2021.09.16 |
[C언어]typedef와 구조체 (0) | 2021.09.05 |