이 섹션에서는 C의 void 포인터와 C++의 void 포인터의 차이점을 살펴보겠습니다. 둘 다 void 포인터이지만 C에서는 void 포인터를 모든 포인터 유형에 할당할 수 있지만 C++에서는 그렇게 할 수 없습니다. C++에서는 할당을 위해 명시적으로 유형 변환해야 합니다.
다음 예에서 이러한 행은 C로 일부 코드를 작성할 때 실행할 수 있습니다.
void *p; int *int_ptr = p;
이것은 C에서 잘 작동합니다. 이제 우리가 메모리 공간을 할당하기 위해 malloc()을 사용하면 명시적 유형 변환을 사용할 수 있지만 그렇게 하지 않아도 괜찮을 것입니다. malloc() 함수는 무효 포인터를 반환합니다.
int *int_ptr = malloc(sizeof(int) * 10);
여기서 반환된 void 포인터는 암시적으로 정수형 포인터로 변환됩니다.
이제 C와 C++에서 동일한 프로그램을 실행하려면 포인터를 명시적으로 유형 변환해야 합니다.
void *p; int *int_ptr = (int *) p; int *arr_ptr = (int *) malloc(sizeof(int) * 10);