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'的*指針仍然是一個指針,它只是未指定它指向的數據類型。 –