본문 바로가기
프로그래밍 언어/cpp

[C++] void* 보이드 포인터

by TyT. 2023. 2. 8.
반응형

void*


void는 일반적으로 함수의 리턴값이 없을때 지정해 주는데 void*를 통해 void형 포인터를 만들 수 있다. void*의 특징으로

  1. 원본의 자료형을 정하지 않음(?)
  2. 어떠한 타입의 변수의 주소든 다 저장 가능
  3. 역참조 불가능
  4. 주소 연산 불가능

이 있겠다. 하나씩 살펴보자

 

  1. 원본의 자료형을 정하지 않음 & 2. 어떤 타입의 변수의 주소든 다 저장 가능
int a = 0;
float b = 0.f;

void* pVoid = nullptr;

pVoid = &a;
pVoid = &b;

 

위 코드와 같이 void 포인터는 원본의 자료형을 정하지 않았기 때문에 어떤 타입의 변수의 주소든 다 저장이 가능하다.

 

  1. 역참조 불가능
*pvoid //불가능

 

pvoid를 통해 원본값을 불러올 수 없다. 왜냐하면 원본의 자료형을 정하지 않았기 때문.

 

  1. 주소 연산 불가능
pVoid += 1; //불가능

 

마찬가지로, 원본의 자료형이 정해지지 않았기 때문에 주소 연산을 할때 몇바이트씩 움직여야하는지 정할수 없어 문법적 오류가 난다.

반응형