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