c++ - 为什么C++语言的malloc函数前面要写指针类型?
问题描述
int *pi = malloc(sizeof(int));
它可以用 C 语言执行,但在 C++ 语言中,它有编译错误。
在 C++ 语言中,它应该使用这种方式。
int *pi = (int*) malloc(sizeof(int));
C 和 C++ 语言中的 malloc 函数有什么区别?
解决方案
C 和 C++ 是两种不同的语言,每种语言都有自己的一套规则。
在 C 和 C++ 中都malloc
返回一个void*
.
在 C 中,avoid*
与任何指针兼容,因此可以(并且应该)直接分配它。在 C++ 中,它与其他任何东西都不兼容,因此不能直接将其分配给非void*
.
因此,如果您想malloc
在 C++ 中使用(您不应该),您必须在您的示例中将void*
返回值转换为适当的指针类型。int*
推荐阅读
- android - 如何让我的凌空 GET 请求从非安全协议返回信息?
- javascript - 不同按钮的切换功能
- java - 我可以使用带有 label.setText 的 void 方法吗?
- angular - 无法扩展垫行
- command-line - WinSCP 命令行 - 使用 -rawtransfersettings 开关时命令“打开”的参数过多
- azure-devops - 让多阶段构建使用与触发构建相同的分支
- python - 如何创建简单的自定义热图?
- android - 离线 Mapbox 混乱
- java - tictactoe minmax 递归导致混乱
- react-native-android - 反应原生找不到模块'metro/src/reactNative Transformer'