c++ - 为什么C++语言的malloc函数前面要写指针类型?

标签 c++ c

<分区>

int *pi = malloc(sizeof(int));

用C语言可以,但用C++语言会编译出错。

在C++语言中,应该这样使用。

int *pi = (int*) malloc(sizeof(int));

C和C++语言中的malloc函数有什么区别?

最佳答案

C 和 C++ 是两种不同的语言,每种语言都有自己的一套规则。

在 C 和 C++ 中,malloc 返回一个 void*

在 C 中,void* 与任何指针兼容,因此可以(并且应该)直接赋值。在 C++ 中,它与其他任何东西都不兼容,因此它不能直接分配给非 void*

所以如果你想在 C++ 中使用 malloc(你不应该),你必须将 void* 返回值转换为适当的指针类型,int * 在你的例子中。

关于c++ - 为什么C++语言的malloc函数前面要写指针类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67121298/

相关文章:

c++ - GetThreadContext 寄存器总是返回 0xCCCCCCCC

c++ - Qt 未定义对 vtable 的引用

c - 如何从编译后的代码中获取c源代码

c++ - 如何以 “fun”的方式学习c++?

c++ - 延迟执行代码

c++ - 匿名命名空间的 GCC 缺陷?

c - 在 C 中循环数字总和(输入)

c - 如何对音频流使用混合和连接过滤器?

c - 为什么递增指针可以工作,但将其视为数组会失败?第2部分

c++ - 使用 "addinclude unistd"修改 Makefile