반응형
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 |