티스토리 뷰

반응형

C언어에서 포인터를 상수로 만드는 방법은 3가지가 있다. 그리고 각 상수들은 서로 기능이 조금씩 다르다.

  • 포인터 상수 : 포인터가 가리키는 값을 변경할 수 없고, 포인터가 가리키는 주소를 변경할 수 있다.
  • 상수 포인터 : 포인터가 가리키는 주소를 변경할 수 없고, 포인터가 가리키는 값을 변경할 수 있다.
  • 상수 포인터 상수 : 포인터가 가리키는 주소와 값을 변경할 수 없다. 

 

 

 

포인터 상수 (Pointer to Const)

const int *p;
int const *p; // 이렇게도 가능하지만, 잘 사용하지 않는다.

 

포인터 상수가 가리키는 주소를 변경이 가능하다.

// 포인터 상수가 가리키는 주소를 변경할 수 있다.
p = &a;
p = &b;

 

하지만 포인터 상수가 가리키는 값을 변경할 수 없다.

*p = 0;  // 에러!

 

 

 

상수 포인터 (Const Pointer)

int *const p = &a;

 

 

상수 포인터는 가르키는 주소를 변경할 수 없다. 하지만 값을 변경할 수 있다.

*p = 100;  // 가능
p = &b; // 오류, 선언 후에는 주소 변경 불가능

 

상수 포인터는 선언 시 초기화를 해야 한다. 선언 후에는 주소를 변경할 수 없다.

int *const pa;
pa = &b; // 오류, 선언 후에는 주소 변경 불가능

 

 

 

상수 포인터 상수 (Const Pointer to Const)

상수 포인터 상수는 가리키는 주소와 그 주소의 값을 모두 변경할 수 없다.

const int *const p = &a;

 

반응형
댓글
공지사항