728x90
728x90
void pointer (generic pointer)는 모든 데이터 자료형의 주소를 저장할 수 있는 데이터 타입이다.
void* p;
모든 데이터 자료형의 주소를 저장할 수 있다.
int a = 10;
double b = 5.5;
void* p1 = &a;
void* p2 = &b;
void 포인터가 가르키는 대상의 타입을 알 수 없으므로 역참조가 불가능하다. 명시적 형변환을 통해 접근할 수 있다.
int a = 10;
void* p = &a;
cout << *p << endl; // 역참조 불가
cout << *(reinterpret_cast<int*>(p)) << endl; // 가능
int* b = reinterpret_cast<int*>(p); // 가능
reinterpret_cast() 는 static_cast() 보다 강력하지만, 안정성이 떨어진다. (C++ 규칙에서 허용하지 않는 캐스팅을 가능하도록 한다.) 주로 void* 타입을 명시적으로 캐스팅할 때 사용한다.
728x90
728x90