C++ Chapter 6.17 : void 포인터 (제네릭 포인터)

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


void 포인터

  • 다양한 데이터 타입을 가리킬 수 있다.
    • 이런 점에서 generic pointer 라고도 한다.
      int main()
      {
      int i = 5;
      float f = 3.0;
      char c = 'a';
      
      void *ptr = nullptr;
      
      ptr = &i; // int도 가리킬 수 있고
      ptr = &f; // float도 가리킬 수 있고
      ptr = &c; // char도 가리킬 수 있다.
      
      return 0;
      }
      

void 포인터의 한계점

1. 포인터 연산이 불가능하다.

ptr + n 포인터 연산이 불가능.

  • 데이터 타입마다 쓰는 메모리 크기가 다른데 그것을 알지 못하는 void * 이기 때문에 연산이 불가능.
    • 실제로 주소값에 K * n 을 더해주어야 하는데 int 같은 경우는 K = 4 이고 하지만.. void 의 경우 그 K를 알 수가 없기 때문

2. 간접 참조가 불가능하다.

*ptr = 땡땡 불가능.

  • 강제로 형 변환해야만 간접 참조가 가능하다.
    cout << *static_cast<char*>(ptr) << endl;
    // char * 로 형변환 한 후 앞에 *를 붙여 간접 참조한다.
    


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기