void pointer
제네릭 포인터라고도 한다. 모든 데이터 타입에 대응되는 포인터라고 생각하면 된다. void 포인터를 선언하면 int, double, char 등 다양한 데이터 타입의 참조를 저장할 수 있다.
int i = 5;
float f = 3.0;
char c = 'a';
void *ptr = nullptr;
// 모두 유효하다
ptr = &i;
ptr = &f;
ptr = &c;
다만 이런 식으로 저장하면 해당 포인터가 어떤 데이터를 참조하는지 알 수 없게된다. +/- 연산을 적용하는 것도 불가능하다.(당연하다 어떤 데이터타입을 참조하는지 알 수 없으니 계산할 메모리의 크기 자체를 정의할 수 없다.) 역참조도 불가능하다.
void pointer 캐스팅
void pointer 자체로는 쓰임새가 제한되기 때문에 실제로 포인터를 활용하기 위해서는 캐스팅을 수행해야 한다. 변수를 캐스팅할때 사용했던 static_cast를 사용할 수 있다.
float f = 3.5;
void *ptr = nullptr;
ptr = &f;
cout << *(static_cast<float*>(ptr)) << endl;'C++ 학습' 카테고리의 다른 글
| [C++] std::array (0) | 2023.11.24 |
|---|---|
| [C++] 다중 포인터 (0) | 2023.11.23 |
| [C++] for each (0) | 2023.11.23 |
| [C++] 참조 변수 (0) | 2023.11.22 |
| [C++] 메모리 동적 할당 (0) | 2023.11.21 |