关于 C 中 malloc 和 calloc 函数的混淆

标签 c function malloc void calloc

<分区>

malloc函数声明:

void *malloc(size_t size);

这里,malloc 返回空指针。所以,void 函数不返回任何内容,然后

为什么要给指针赋malloc(函数调用)值?

例如:

int *ptr;
ptr = malloc(10 * sizeof (*ptr));
^^^

malloc() 的返回值是什么???

最佳答案

对于语言设计者而言,这可能是一个不幸的选择,但他们决定为他们的 void* 结构重用 void ,这几乎颠倒了它的含义: while void 表示“不返回任何内容”,void* 表示“返回指向任何内容的指针”。

本质上,void* 是指向未指定对象的指针。在取消引用之前,它必须转换为指向特定类型的指针。这正是 malloccalloc 返回的指针类型。

关于关于 C 中 malloc 和 calloc 函数的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44883319/

相关文章:

function - 覆盖命名空间中导入的函数

javascript - 我正在尝试为三个单独的选项卡运行 onEdit 函数,但收到 TypeError : Cannot read property 'value' of undefined

c - VLA 和通过 malloc 进行动态内存分配有什么区别?

c++ - 为什么写入 42 路缓冲区比写入零缓冲区快?

c - Libevent:如何暂时禁用,然后重新启用 EV_READ? (在 C 中)

c++ - char * 到字符串的转换

Java 8 如何在没有 Lambda 的情况下编写函数?

c - 查找素数并将其分配给数组

c - 在 C 上反转字符串

c++ - 是否可以像这样编写c malloc函数代码