프로그래밍/C | 2015. 4. 23. 23:17
const 키워드를 포인터 앞에 붙이면 포인터를 상수화 한다.
포인터 자체를 상수화.
포인터가 가리키는 변수를 상수화.
이 두가지 의미가 있다.
1. 포인터가 가리키는 변수의 상수화.
int a = 10;
const int* p = &a;
*p = 30 ; //안됨.
a = 30; //가능.
포인터 p가 가리키는 변수의 값을 못 바꾸게 하겠다는 의미.
a자체가 상수화 되는 것이 아니고, 포인터 p를 통해서 변수 a값을 변경하는 것을 막는다.
2. 포인터 상수화
int a = 10;
int b = 20;
int* const p = &a;
p = &b; // 오류
*p = 30; //된다.
포인터 p가 지니는 주소 값을 변경 할 수 없다는 뜻이다.
따라서, 포인터도 상수화 시키고, 포인터가 가리키는 데이터도 상수화하려면?
const int* const p = &a;
void print(const int* ptr)
{
int *p = ptr; //에러.
}
ptr은 const 키워드에 의해서 상수화 되어있다.
이는 print 함수 내에서 ptr이 가리키는 변수의 조작을 허용 않겠다는 의미.
따라서, int* 로의 대입이 허용되지 않는다.
[C언어] 데이터 영역(Data Area), 스택 영역(Stack Area), 힙 영역(Heap Area) (0) | 2015.04.25 |
---|---|
[C언어] strlen, strcpy, strncpy, strcat, strncat, strcmp, strncmp (0) | 2015.04.25 |
[C언어] 표준 입 출력과 버퍼(Buffer) (0) | 2015.04.25 |
[C언어] puts,fputs, gets, fgets, (0) | 2015.04.25 |
[C언어] 문자열 상수, 포인터 배열 함수 (0) | 2015.04.23 |
[C언어] 재귀적 함수 호출, n!(Factorial 계산) (0) | 2015.04.22 |
[C언어] static 변수, register 변수 (0) | 2015.04.22 |
[C언어] printf, scanf, %e, %E (0) | 2015.04.22 |
[C언어] 리터럴(literal) 상수, 심볼릭(Symbolic) 상수 (0) | 2015.04.22 |
[C언어] sizeof 연산자, double형, unsigned (0) | 2015.04.22 |
Recent Comments