반응형
포인터 변수 const선언
포인터 변수에 const선언을 하면 포인터 변수를 사용해서 변수에 저장된 값을
변경하는것을 허용하지 않게 됩니다.
그러나 변수 num에 저장된 값 자체의 변경이 불가능한 것은 아닙니다.
다만 포인터변수를 통해서 변경을 허용하지 않을 뿐입니다.
아래의 코드는 그에 대한 예시입니다.
int num = 10;
const int* ptr = #
*ptr = 30; // 컴파일 에러
num = 40; // 컴파일 성공
포인터 변수의 상수화
아래의 코드에서는 포인터 변수에 저장된 값을 상수화 한다는 의미입니다.
즉 포인터변수에 저장된 값이 변경이 불가능한 것입니다.
포인터 변수가 가리키는 대상의 변경을 허용하지 않는다는 뜻입니다.
int num1 = 10;
int num2 = 20;
int* const ptr = &num1;
ptr = &num2; // 컴파일 에러
*ptr = 40; // 컴파일 성공
const int* const ptr = # // 가능
const int* const ptr = # 이렇게 사용이 가능합니다.
포인터 변수 자체를 const선언 포인터 변수에 저장된 값 또한 const를 붙여 상수화가 가능합니다.
이렇게 되면 포인터 변수를 통해서 저장된 값을 변경하지 못하고 포인터 변수가
가리키는 대상의 변경또한 허용하지 않습니다.
const int* const ptr = # // 가능
const선언 의미
const선언은 추가적인 기능을 제공하기 위한 것이 아니라,
코드의 안전성을 높이기 위한 것입니다.
따라서 이러한 const의 선언을 소홀하기 쉬운데,
이러한 const의 선언과 같이 코드의 안전성을 높이는 선언은
매우 중요합니다!
값이 바뀌면 안되는 변수를 선언할때 const는 필요해집니다!
반응형
반응형
'C' 카테고리의 다른 글
| 내림차순 정렬 (0) | 2023.05.17 |
|---|---|
| 상수 형태의 문자열을 가리키는 포인터 (0) | 2023.05.16 |
| Call by value와 Call by reference의 차이점 (0) | 2023.05.15 |
| 포인터와 함수 이해 (0) | 2023.05.15 |
| 포인터 배열 (0) | 2023.05.15 |