Const 키워드를 포인터에 사용 시 위치에 따라 변경할 수 있는 제한이 달라진다.
#include <stdio.h>
int main(void)
{
int a = 0;
int b = 0;
// cosnt 포인터
// 포인터가 가리키는 원본이 상수화
// 가리키는 주소를 변경할 수 있다.
// 원본 값을 수정할 수 없다.
const int* pConstInt = &a;
pConstInt = &b;
// 포인터 const
// 포인터 변수를 상수화
// 가리키는 주소를 변경할 수 없다.
// 원본 값을 수정할 수 있다.
int* const pIntConst = &a;
*pIntConst = 400;
// 모두다 const화 시킬 수 있다.
// 초기화 시 가리킨 대상만 가리키고 원본 또한 수정 할 수 없다.
const int* const pConstIntConst = nullptr;
// const 수식의 기준을 * 로 잡자
// * 앞에 있으면 포인터를 수식 뒤에 있으면 변수를 수식
int const* p = &a; // => const 포인터와 같다.
{
// 원본 a 가 상수가 된게 아니고
// const 포인터 변수의 기능에 제한을 두는 것을 헷갈리지 말자.
int a = 0;
const int* pInt = &a;
// 원본 자체는 값을 바꿀 수 있다.
a = 100;
}
return 0;
}'C, C++' 카테고리의 다른 글
| 11. C언어 메모리 동적 할당 (0) | 2023.06.01 |
|---|---|
| 10. void 포인터 (0) | 2023.05.31 |
| 08. const 상수화 (0) | 2023.05.30 |
| 07. 포인터 (0) | 2023.05.30 |
| 06. 함수 (0) | 2023.05.28 |