誰能幫我解釋這行做無法理解這樣的代碼做什麼
(UserList *) malloc(sizeof(UserList));
我是新的C世界。我的理解是爲Userlist類型分配內存。 如果是這樣,爲什麼定義不只是
Userlist malloc(sizeof(UserList)) ?
誰能幫我解釋這行做無法理解這樣的代碼做什麼
(UserList *) malloc(sizeof(UserList));
我是新的C世界。我的理解是爲Userlist類型分配內存。 如果是這樣,爲什麼定義不只是
Userlist malloc(sizeof(UserList)) ?
這段代碼是做是爲UserList
類型的結構分配動態內存。前面的表達式(UserList*)
告訴編譯器哪種類型要處理由malloc
返回的值。由於malloc
在C中是通用的,並且可以返回指向任何類型的指針(有效地使用C術語,void*
),所以您可以告訴編譯器該指針指向的是什麼類型。這通常發生在UserList*
類型的變量的初始化的情況下:
UserList* user_list = (UserList *) malloc(sizeof(UserList));
注意變量中獲得的結果如何是指向正確的類型。您可以使用正常的*user_list
語法訪問此新分配內存中指針指向的結構。
實際上,你不必告訴編譯器什麼類型的內存,它實際上是C社區所不喜歡的。 – Blindy
@布林迪:是的,謝謝,正當我重新閱讀時糾正了它。 :) –
malloc向分配的內存返回一個指針(內存位置)。 *表示「指向」UserList而不是用戶列表本身。
我不確定這一行是聲明還是聲明。如果它是一個語句,那麼括號會導致返回的指針類型被轉換爲「指向UserList的指針」而不是「void *」,這意味着指向任何東西。
我們需要更多的上下文。我想第一行可能是演員。但是你可能會把它分配給某些東西。 – onemasse
爭論語法(即,「爲什麼不是這樣,而不是...?」)似乎有點..毫無意義,你不覺得嗎?就是這樣。 – Blindy
答案:這段代碼不會有任何用處。 –