본문 바로가기
IT/c언어

C 언어 포인터 상수

by 뉴코딩맨 2023. 7. 12.
포인터 상수란 포인터 변수의 값이 변경되지 않는 상수를 말합니다. 즉, 한 번 포인터 변수에 할당된 메모리 주소는 변경할 수 없으며, 다른 변수나 상수의 주소를 가리킬 수 없습니다. 포인터 상수는 주로 프로그램에서 고정된 주소를 가리키는 데 사용됩니다.
 
 

포인터 상수의 선언과 초기화

포인터 상수를 선언하고 초기화하는 방법은 다음과 같습니다.

 

const int* ptr; // 값을 변경할 수 없는 포인터
int* const ptr; // 주소를 변경할 수 없는 포인터
const int* const ptr; // 값을 변경할 수 없고 주소도 변경할 수 없는 포인터
 
위의 예제에서 const 키워드는 변수를 상수로 선언함을 나타냅니다. 첫 번째 선언은 포인터 변수를 통해 가리키는 값 자체를 변경할 수 없게 합니다. 두 번째 선언은 포인터 변수의 주소를 변경할 수 없게 합니다. 세 번째 선언은 값 뿐만 아니라 주소까지 변경할 수 없는 상수 포인터를 선언합니다.

 

포인터 상수의 예제

아래의 예제를 통해 포인터 상수의 사용법을 이해해보겠습니다.

 

#include <stdio.h>

int main() {
    int num = 10;
    const int* ptr = &num; // 값을 변경할 수 없는 포인터

    printf("포인터가 가리키는 값: %d\n", *ptr);

    // *ptr = 20; // 에러: 포인터가 가리키는 값은 변경할 수 없음

    int num2 = 30;
    ptr = &num2; // 포인터는 다른 변수의 주소를 가리킬 수 있음

    printf("포인터가 가리키는 값: %d\n", *ptr);

    return 0;
}
 
위의 예제에서는 num이라는 정수 변수를 선언하고 초기값을 할당합니다. 이후 const int* 형식으로 선언된 포인터 ptr을 선언하고 num의 주소를 할당합니다. 이제 ptr은 num을 가리키는 포인터 상수가 됩니다. 포인터 상수의 특성으로 인해 *ptr을 통해 값을 변경하는 것은 불가능합니다. 또한, 다른 변수인 num2의 주소를 ptr에 할당하여 가리킬 수 있습니다.
 
 

결론

C 언어에서 포인터 상수는 포인터 변수의 값을 변경할 수 없으며, 한 번 할당된 주소를 변경할 수 없습니다. 포인터 상수는 프로그램에서 고정된 주소를 가리키는 데 사용되며, 안정성과 코드의 가독성을 향상시키는 데 도움이 됩니다. 포인터 상수를 적절히 활용하여 프로그램의 신뢰성을 높이고 버그를 예방할 수 있습니다.
 

댓글