如果没有意义,请随意编辑标题。所以我一直在使用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