Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

"void *"는 C와 C++에서 어떻게 다릅니까?

<시간/>

이 섹션에서는 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);