<分区>
malloc
函数声明:
void *malloc(size_t size);
这里,malloc
返回空指针。所以,void
函数不返回任何内容,然后
为什么要给指针赋malloc(函数调用)值?
例如:
int *ptr;
ptr = malloc(10 * sizeof (*ptr));
^^^
malloc()
的返回值是什么???
<分区>
malloc
函数声明:
void *malloc(size_t size);
这里,malloc
返回空指针。所以,void
函数不返回任何内容,然后
为什么要给指针赋malloc(函数调用)值?
例如:
int *ptr;
ptr = malloc(10 * sizeof (*ptr));
^^^
malloc()
的返回值是什么???
最佳答案
对于语言设计者而言,这可能是一个不幸的选择,但他们决定为他们的 void*
结构重用 void
,这几乎颠倒了它的含义: while void
表示“不返回任何内容”,void*
表示“返回指向任何内容的指针”。
本质上,void*
是指向未指定对象的指针。在取消引用之前,它必须转换为指向特定类型的指针。这正是 malloc
或 calloc
返回的指针类型。
关于关于 C 中 malloc 和 calloc 函数的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44883319/