我的结构如下所示
struct Node
{
int data;
Node* next;
}
以及指向此Node结构的指针数组
struct Node *list[10];
list[0]=(struct Node*)mal?loc(sizeof(struct Node));
这里在将内存分配给列表的第一个元素时,我真的需要malloc(sizeof(struct Node))
吗?我有这个疑问,因为它提供了一个结构的大小,我需要的是结构的大小,以存储其地址(struture指针的大小)小于4B?请解释一下。
答案 0 :(得分:3)
我真的需要
malloc(sizeof(struct Node))
吗?
是。这是对的。
list[0]
的类型为Node*
。它可以指向Node
类型的对象。因此,您需要分配足够的内存来保存Node
类型的对象,以便能够指向list[0]
。使用sizeof(struct Node)
作为malloc
的参数可以为您提供。
但是,您可以更改一些事项,使您的程序更像C ++程序,而不像C程序。
struct Node
。您只能使用Node
。malloc
。使用new
运营商。Node *list[10];
list[0]= new Node;
答案 1 :(得分:0)
struct Node *list[10];
list[0]=(struct Node*)mal?loc(sizeof(struct Node));
list[0]
将存储一个指向某个将存储Node
的内存的指针。你使用malloc
来分配内存,所以你必须告诉malloc
多少内存你需要分配。返回malloc
给你一个指向那个分配内存的指针。