const

2022. 11. 28. 21:31개인공부/C++

const

상수처럼 취급하지만 값을 변경하는게 완전히 불가능한게 아니다 주소로 접근시 가능하다

volatile const int cint= 100; 

pint = (int*)&cint;

*pint = 300;

 

const 와 포인터

const int* pConstInt = &a;  는 가리키는 원본을 수정할 수 없다.

*pConstInt = 100; (X)

pConstInt = &b; (O)

 

포인터 const

int* const pIntConst = &a;

*pIntConst = 400; (O) 으로 주소값을 변경할 수 있지만

*pConstInt = &b; (X) 처럼 포인터 변수 자체가 상수화 되었기때문에 더 이상 다른변수의 주소를 받을 수 없다.

 

위의 두가지를 조합하면

const int* const  변수 = nullptr; 

초기화시 가리킨 대상만 가리킴, 가리키는 원본을 수정할 수 없다

 

그러면  int const* p = &a; 는 무슨 뜻일까 ?  *를 기준으로 잡기 때문에 첫번째 경우와 같다.

 

void* 보이드 포인터

특징

1. 원본의 자료형을 정하지 않음

2. 어떠한 타입의 변수의 주소든 다 저장 가능

3. 역참조 불가능    

4. 주소 연산 불가능

포인터의 자료형이 정해지지 않았으므로 나타나는 특징이다.

 

void* pVoid = nullptr

'개인공부 > C++' 카테고리의 다른 글

함수 오버로딩  (0) 2022.12.03
문자 char  (0) 2022.11.30
포인터 변수 / 포인터 배열  (0) 2022.11.27
변수  (0) 2022.11.26
변수 / 분할구현  (0) 2022.11.25