[C++]
[C++] 강력한 포인터, void 포인터
Hevton
2021. 6. 22. 15:38
반응형
void 포인터는 어떠한 자료형이던 포인팅 할 수 있는 포인터 형이다.
int a = 10;
short *s = &a; // 오류발생.
원래는 이렇게 포인터 타입과 데이터 타입이 일치해야 하므로, 대입에 있어 명확하게 해야할 필요가 있다.
이를 좀 완화하여, 모두 받아낼 수 있도록 할 수 있다.
int a = 10;
void *v = &a;
v는 어떠한 타입의 데이터든 포인팅 할 수 있게 된다.
단, void 포인터를 사용할 때 주의할 점이 있다.
이렇게 대입할 때는 문제가 되지 않지만, 사용할 때에는 명확하게 타입을 선언해줘야한다.
즉, void 포인터에 주소는 들어가 있는데 그 주소에 해당하는 데이터가 얼만큼의 크기인지를 컴퓨터 입장에선 알 수 없으므로, 명시해주어야한다.
무슨말이냐면
int a = 10;
void *s = &a;
cout << *s << endl; // 오류
int a = 10;
void *s = &a;
cout << *((int *)s) << endl; // 정상작동.
반응형