본문 바로가기

공부/C++

무슨 타입이든 가리킬 수 있는 void 포인터

다 좋은데 문제는

가리킬 수만 있고. 뭘 할수는 없음.

void포인터는 모든 타입을 가리킬 수 있지만 해당 변수가 어떤 타입인지는 저장하지 않기때문에

주소를 저장하는 용도로만 사용된다.[솔직히 말해서 이걸 왜 쓰는지는 모르겠다.]

이 포인터를 사용하려면 타입이 있는 포인터로 형변환을 시킨 후에 사용해야만 한다.
 
뭔소린지 잘 모르겠으니 예제 코드를 작성하자.

#include <iostream>
using namespace std;


int main()
{
int i = 300;
void* pv = &i;


int* pi = (int*)pv;

cout << "i  = " << i << "\n"; // i값
cout << "pi = " << pi << "\n"; // i의 주소값을 int형 포인터로 바꾼 뒤 주소값을 출력
cout << "pv = " << pv << "\n"; // i의 주소값을 나타내는 보이드형의 포인터 pv. 출력.

system("pause");

return 0;

}


////////////////




//출력화면



위의 코드에서는 주소를 저장하는 용도로만 사용했기 때문에[값을 바꾸려하지 않았음] pv를 출력해도 에러가 나지 않는다.

이 방법은 해당 위치의 값이 int값이 들어있다 는 것을 알고나서 형변환을 한 예 이다.

만약 해당 값이 int형으로 들어있는게 아니라면 오류가 난다.