malloc
函数声明:混淆malloc和释放calloc功能用C
void *malloc(size_t size);
这里,malloc
返回void指针。所以,A void
函数什么也没有返回,然后
为什么我们将malloc(函数调用)赋值给指针?
例如:
int *ptr;
ptr = malloc(10 * sizeof (*ptr));
^^^
是什么返回值从malloc()
持有???
malloc
函数声明:混淆malloc和释放calloc功能用C
void *malloc(size_t size);
这里,malloc
返回void指针。所以,A void
函数什么也没有返回,然后
为什么我们将malloc(函数调用)赋值给指针?
例如:
int *ptr;
ptr = malloc(10 * sizeof (*ptr));
^^^
是什么返回值从malloc()
持有???
这可能是对语言的设计者的一部分不幸的选择,但他们决定重用void
他们void*
结构,其中近反转其含义是:当void
表示“没有返回值”,void*
的意思是“返回一个指向什么“。
实质上,void*
是指向未指定对象的指针。必须将其转换为指向特定类型的指针,然后才能对其进行解引用。这正是malloc
或calloc
返回的指针种类。
void和void *是不同的。 void意味着nohting,但void *可以是任何东西。 void(void *)的指针可以被转换为任何其他指针。
为什么malloc()返回void *?
这意味着malloc为你分配了一个内存缓冲区,你可以使用它来存储你想要的任何东西。
'void'是* nothing *,但是指向'void'的*指针仍然是一个指针,它只是未指定它指向的数据类型。 –