C++ void 포인터란? (generic 포인터 , 함수형 포인터)

2024. 1. 30. 10:50개발공부/C, C++

void pointer (generic pointer)는 모든 데이터 자료형의 주소를 저장할 수 있는 데이터 타입이다.

심지어 함수도 가리킬 수 있는 포인터이다.

 

void* 란

주소값을 가지는 포인터 변수이지만, 아직 어떤 방식으로 역참조를 할지는 정해지지 않았다는 뜻이 된다.

 

참고로 const ,volatile형식의 변수는 void*로 가리킬 수 없다.

  void* vpointer=nullptr;

        int a = 0;
        float b = 0.5f;
        double c = 0.05;
        long long d = 50;

        vpointer = &a;
        vpointer = &b;
        vpointer = &c;
        vpointer = &d;

위코드는 잘 실행되지만 역참조시 (아래) 아래와 같이  정확한 자료형을 다시 할당해 주어야 한다.

void* vpointer=nullptr;

        int a = 510;
        vpointer = &a;

        int* ipointer = (int*)vpointer;
        cout << *ipointer << endl;