C语言 为什么编译器在我不投射 malloc 的结果时抱怨



我正在检查不需要显式强制转换 malloc 调用结果的代码,但每当我尝试这样做时,编译器都会抛出错误。

char *somevar;
somevar = malloc(sizeof(char) * n); //error
somevar = (char *)malloc(sizeof(char) * n); // ok

如果您使用编译器而不是 C 编译器C++就会发生这种情况。因为C++需要显式强制转换。问题不仅在于(取消)转换malloc结果,还在于指向其他指针的任何 void 指针。

你记得包含函数原型吗?对于 malloc(3),这是:

#include <stdlib.h>

相关内容

  • 没有找到相关文章

最新更新