Updated:

less than 1 minute read

개요

  • void pointer
    • 데이터 형이 정해지지 않은 포인터
    • 모든 타입의 데이터 할당이 가능하며 타입캐스팅을 통해 접근
    • C++17 환경이라면 any 사용 권장
  • null pointer
    • 아무 것도 가리키지 않는 포인터
    • 포인터 초기화 또는 메모리 할당 실패 시 반환 값 등에 사용


예제

  • 코드
    • #include <cstdlib>
      #include <iostream>
      #include <string>
             
      using namespace std;
             
      int main() {
          auto func = [](auto arg) {
              void *v = &arg;
              cout << *static_cast<decltype(arg) *>(v) << endl;
          };
             
          func(nullptr);
          func(1);
          func('a');
          func("b");
          func(string("c"));
             
          int *i = new int;
          if (i == nullptr) {
              return EXIT_FAILURE;
          }
             
          *i = 1;
          cout << *i << endl;
             
          return EXIT_SUCCESS;
      }
      
  • 실행 결과
    • nullptr
      1
      a
      b
      c
      1