📜  C和C++中的“ void *”有何区别?

📅  最后修改于: 2021-05-25 23:13:50             🧑  作者: Mango

C允许将void *指针分配给任何类型的指针而无需强制转换,而C++则不允许;这个习惯用法经常出现在使用malloc内存分配的C代码中。例如,以下内容在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和C++中进行编译,必须使用显式强制转换:

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

来源:
http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”