📜  C 和 C++ 中的“void*”有何不同?

📅  最后修改于: 2022-05-13 01:54:54.345000             🧑  作者: Mango

C 和 C++ 中的“void*”有何不同?

C 允许将 void* 指针分配给任何指针类型而无需强制转换,而在 C++ 中则不允许。我们必须在 C++ 中显式类型转换 void* 指针

例如,以下内容在 C 中有效,但在 C++ 中无效:

void* ptr;
int *i = ptr; // Implicit conversion from void* to int*

相似地,

int *j = malloc(sizeof(int) * 5);  // Implicit conversion from void* to int* 

为了使上面的代码也能在 C++ 中编译,我们必须使用显式转换,如下所示,

void* ptr;
int *i = (int *) ptr;
int *j = (int *) malloc(sizeof(int) * 5);