logo

C의 const 포인터

상수 포인터

C의 상수 포인터는 가리키는 변수의 주소를 변경할 수 없습니다. 즉, 주소는 상수로 유지됩니다. 따라서 상수 포인터가 어떤 변수를 가리키면 다른 변수를 가리킬 수 없다고 말할 수 있습니다.

상수 포인터의 구문

 *const ; 

상수 포인터 선언은 다음과 같습니다.

문자열을 int로 캐스트
 int *const ptr; 

예제를 통해 상수 포인터를 이해해보자.

 #include int main() { int a=1; int b=2; int *const ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

위 코드에서:

  • 두 개의 변수, 즉 각각 값 1과 2를 갖는 a와 b를 선언합니다.
  • 상수 포인터를 선언합니다.
  • 먼저 변수 'a'의 주소를 포인터 'ptr'에 할당합니다.
  • 그런 다음 변수 'b'의 주소를 포인터 'ptr'에 할당합니다.
  • 마지막으로 'ptr'이 가리키는 변수의 값을 출력해 봅니다.

산출

C의 const 포인터

위 출력에서 ​​위 코드가 '읽기 전용 변수 'ptr' 할당'' 오류를 생성하는 것을 확인할 수 있습니다. 이는 'ptr'이 보유하고 있는 변수 'ptr'의 값을 변경할 수 없다는 의미입니다. 위 코드에서는 'ptr' 값을 &a에서 &b로 변경하고 있는데, 이는 상수 포인터로는 불가능합니다. 따라서 어떤 변수를 가리키는 상수 포인터는 다른 변수를 가리킬 수 없다고 말할 수 있습니다.

상수에 대한 포인터

상수에 대한 포인터는 포인터가 가리키는 변수의 값을 변경할 수 없는 포인터입니다. 이러한 포인터의 주소는 변경할 수 있지만 포인터가 가리키는 변수의 값은 변경할 수 없습니다.

상수에 대한 포인터의 구문

 const * 

상수에 대한 포인터 선언은 다음과 같습니다.

 const int* ptr; 

예를 통해 이해해 봅시다.

    먼저 포인터 값을 변경하는 코드를 작성합니다.
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%u',ptr); return 0; } 

위 코드에서:

  • 두 개의 변수, 즉 각각 100과 200의 값을 갖는 a와 b를 선언합니다.
  • 상수에 대한 포인터를 선언합니다.
  • 먼저 변수 'a'의 주소를 포인터 'ptr'에 할당합니다.
  • 그런 다음 변수 'b'의 주소를 포인터 'ptr'에 할당합니다.
  • 마지막으로 'ptr'의 값을 출력해 보겠습니다.

산출

C의 const 포인터

위 코드는 성공적으로 실행되며 출력에 'ptr' 값이 표시됩니다.

  • 이제 포인터가 가리키는 변수의 값을 변경하는 코드를 작성합니다.
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&b; *ptr=300; printf('Value of ptr is :%d',*ptr); return 0; } 

위 코드에서:

자바 람다 표현식
  • 두 개의 변수, 즉 'a'와 'b'를 각각 값 100과 200으로 선언합니다.
  • 상수에 대한 포인터를 선언합니다.
  • 변수 'b'의 주소를 포인터 'ptr'에 할당합니다.
  • 그런 다음 포인터 'ptr'을 통해 변수 'b'의 값을 수정하려고 합니다.
  • 마지막으로 포인터 'ptr'이 가리키는 변수의 값을 인쇄해 봅니다.

산출

C의 const 포인터

위 코드는 '읽기 전용 위치 '*ptr' 할당'' 오류를 보여줍니다. 이 오류는 포인터가 가리키는 변수의 값을 변경할 수 없음을 의미합니다.

상수에 대한 상수 포인터

상수에 대한 상수 포인터는 위의 두 포인터가 결합된 포인터입니다. 가리키는 변수의 주소를 변경할 수 없으며 이 주소에 있는 값을 변경할 수도 없습니다.

통사론

 const * const ; 

상수에 대한 상수 포인터 선언은 다음과 같습니다.

 const int* const ptr; 

예를 통해 이해해 봅시다.

 #include int main() { int a=10; int b=90; const int* const ptr=&a; *ptr=12; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

위 코드에서:

  • 두 개의 변수, 즉 'a'와 'b'를 각각 값 10과 90으로 선언합니다.
  • 상수에 대한 상수 포인터를 선언한 다음 'a'의 주소를 할당합니다.
  • 포인터 'ptr'을 통해 변수 'a'의 값을 변경하려고 합니다.
  • 그런 다음 변수 'b'의 주소를 포인터 'ptr'에 할당하려고 합니다.
  • 마지막으로 포인터 'ptr'이 가리키는 변수의 값을 인쇄합니다.

산출

C의 const 포인터

위 코드는 '읽기 전용 위치 '*ptr' 할당'과 '읽기 전용 변수 'ptr' 할당' 오류를 보여줍니다. 그러므로 우리는 상수에 대한 상수 포인터는 이 포인터가 가리키는 주소나 값을 변경할 수 없다는 결론을 내립니다.