如果沒有意義,請隨意編輯標題。所以我一直在使用malloc
一段時間沒有真正完全確定它的工作原理。如果我創建一個int指針並將其設置爲malloc(10*sizeof(int)
,我認爲它在內存中分配了一個int大小的10倍的塊,然後返回此分配的起始地址,但是沒有任何內容在該內存中實際初始化。我到目前爲止還好嗎?如果你malloc一個struct *它創建局部變量嗎?
現在說我這樣創建的鏈接列表節點結構:
typedef struct node_ {
int data;
struct node_ *next;
} Node;
,然後有一個創建鏈接列表功能:
Node* LLCreate(int data) {
Node *head = malloc(sizeof(Node));
if (head != NULL) {
head->next = NULL; // don't get how malloc created `next`
head->data = data; // or `data`
}
return head;
}
什麼我不明白,並能」如果head
只是內存中一個大小爲Node
的空塊的起始位置,而不是實際變量,那麼它是如何具有next
和data
的局部變量?
也許這是一個無意義的問題,因爲我對這裏發生的事情有一些基本的誤解,但是如果任何人明白我想問什麼,並且可以爲我解決這個問題,我會非常感激。
'head'是指向*(即*的*地址)* malloc全部內存的內存的*指針。 –
變量只是一個存儲區域(加上一個類型)。 「變成一個變量」沒有什麼不可思議的。 –
所以malloc實際上在內存中創建了struct,它不僅僅爲它分配空間? – Austin