const 키워드
- 변경할 수 없는 값을 선언하기 위해 사용
- 특정 데이터의 값을 의도치 않게 변경하는 것을 방지한다.
아래의 차이점을 알아보자.
const int num = 10;
const int* ptr = #
int* const ptr = #
const int* const ptr = #
1. const int num = 10;
- 설명:
- num은 상수(const) 정수로 선언되었으며, 값을 변경할 수 없다.
- 특징:
- 값을 초기화하지 않으면 컴파일 오류가 발생한다.
- num에 새로운 값을 할당하려고 하면 오류가 발생한다.
const int num = 10;
// num = 20; // 컴파일 오류: 상수 값을 변경할 수 없음
2. const int* ptr = #
- 설명: 데이터를 보호하고 싶을 때 사용 (가리키는 값을 변경하지 않도록 보장).
- ptr은 상수 정수(const int)를 가리키는 포인터.
- 포인터가 가리키는 대상의 값은 변경할 수 없다.
- 하지만, 포인터 자체는 다른 주소를 가리킬 수 있다.
- 특징:
- *ptr의 값은 변경 불가.
- ptr은 다른 주소를 가리킬 수 있음.
const int num1 = 10;
const int num2 = 20;
const int* ptr = &num1; // ptr은 num1을 가리킴
// *ptr = 30; // 컴파일 오류: 상수 값을 변경할 수 없음
ptr = &num2; // ptr은 다른 상수를 가리킬 수 있음
3. int* const ptr = #
- 설명: 포인터 자체를 고정하고 싶을 때 사용 (한번 초기화된 포인터를 변경하지 않도록 보장).
- ptr은 상수 포인터입니다.
- 포인터 자체는 변경할 수 없지만, 포인터가 가리키는 값은 변경할 수 있습니다.
- 특징:
- ptr은 초기화 시 가리킬 주소를 정해야 하며, 이후 다른 주소를 가리킬 수 없음.
- *ptr을 통해 값을 변경할 수 있음.
int num1 = 10;
int num2 = 20;
int* const ptr = &num1; // ptr은 num1을 가리킴
*ptr = 30; // num1의 값이 30으로 변경됨
// ptr = &num2; // 컴파일 오류: 상수 포인터는 다른 주소를 가리킬 수 없음
4. const int* const ptr = #
- 설명: 데이터를 보호하고 포인터를 변경하지 않도록 완전히 고정하고 싶을 때 사용.
- ptr은 상수 정수(const int)를 가리키는 상수 포인터입니다.
- 포인터가 가리키는 값도 변경할 수 없고, 포인터 자체도 변경할 수 없습니다.
- 특징:
- *ptr의 값 변경 불가.
- ptr이 다른 주소를 가리키도록 변경 불가.
const int num1 = 10;
const int num2 = 20;
const int* const ptr = &num1; // ptr은 num1을 가리키는 상수 포인터
// *ptr = 30; // 컴파일 오류: 상수 값을 변경할 수 없음
// ptr = &num2; // 컴파일 오류: 상수 포인터는 다른 주소를 가리킬 수 없음
'IVS > C 프로그래밍' 카테고리의 다른 글
[C] 배열 복사- memcpy, 비교- memcmp (0) | 2025.01.13 |
---|---|
[C] 메모리 관련 (0) | 2025.01.13 |
[C/C++] 배열 초기화 - memset, fill (0) | 2025.01.13 |
[C] 형변환, 비트연산자 (1) | 2025.01.13 |
[C++] 문자열 처리- strcmp, strcpy, strcat (0) | 2025.01.09 |