은근한

C언어 8. const 포인터 본문

카테고리 없음

C언어 8. const 포인터

EsJoo 2013. 10. 30. 13:57

const포인터는 3가지 경우가 있다.


우선


1. const가 포인터가 가리키는 데이터형 앞에 오는경우


이경우 포인터가 가리키는 값을 변경할 수 없게 된다. 포인터 편수 자신의 값인 주소를 변경하는 것은 가능하다.


ex)

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
void main ()
{
    char str1[20] = "abcd";
    char str2[20] = "efgh";
    const char *p = str1;
    p[0] = 'A'//p가 가리키는 값을 병경할 수 없으므로 에러
    p = str2; //p의 값(주소)은 변경가능하다.
}



2. const가 포인터 변수 이름 앞에 오는경우


포인터가 가리키는 값은 변경할 수 있지만 포인터 변수 자신의 값(주소)을 변경할수 없게 된다.


ex)

Colored By Color Scripter

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
void main ()
{
    char str1[20] = "abcd";
    char str2[20] = "efgh";
    char *const p = str1;
    p[0] = 'A'//p가 가리키는 값은 변경할 수 있다.
    p = str2; //p의 값(주소)을 변경할수 없으므로 에러
}



3.const가 데이터형 앞과 포인터 변수 이름 앞 양쪽 모두에 오는경우


포인터가 가리키는 값도 변경할 수 없고 포인터 변수 자신의 값(주소)도 변경할 수 없게 된다.


ex)


1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
void main ()
{
    char str1[20] = "abcd";
    char str2[20] = "efgh";
    const char *const p = str1;
    p[0] = 'A'//p가 가리키는 값을 변경할수 없으므로 에러
    p = str2; //p의 값(주소)을 변경할수 없으므로 에러
}