본문 바로가기
[C++]

[C++] 강력한 포인터, void 포인터

by Hevton 2021. 6. 22.
반응형

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; // 정상작동.

 

반응형

'[C++]' 카테고리의 다른 글

[C++] 포인터 연산  (0) 2021.06.22
[C++] 2진수, 8진수, 10진수, 16진수 표현  (0) 2021.06.22
[C++] 구조체  (0) 2021.06.22
[C++] Range based for문  (0) 2021.06.22
[C++] Auto 키워드  (0) 2021.06.22