关于C中malloc和calloc函数的困惑

Jay*_*esh 2 c malloc function void calloc

malloc功能声明:

void *malloc(size_t size);
Run Code Online (Sandbox Code Playgroud)

在这里,malloc返回void指针.那么,A void函数什么都不返回呢

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

例如:

int *ptr;
ptr = malloc(10 * sizeof (*ptr));
^^^
Run Code Online (Sandbox Code Playgroud)

什么是返回值来自malloc()???

das*_*ght 6

这可能是语言设计者的一个不幸的选择,但是他们决定重用void它们的void*构造,这几乎颠倒了它的含义:虽然void意味着"不返回",void*意味着"返回指向任何东西的指针".

本质上,void*是指向未指定对象的指针.在取消引用之前,必须将其转换为指向特定类型的指针.这正是由malloc或返回的那种指针calloc.