如何在c中创建结构的新实例

如何在c中创建结构的新实例,c,struct,malloc,dynamic-memory-allocation,C,Struct,Malloc,Dynamic Memory Allocation,我是C语言的新手,因此仍在努力学习该语言。我已经在头文件中创建了一个链表结构,我正在尝试创建此结构的新实例。我知道在java中可以使用new操作符,但是我如何在c中模拟这种行为呢?传统上,我会想到以下几点: linked.h中的代码 typedef struct linked_list{ //assuming node type is implemented node *next_node; } linked.c中的代码 linked_list *link = NULL; link = ma

我是C语言的新手,因此仍在努力学习该语言。我已经在头文件中创建了一个链表结构,我正在尝试创建此结构的新实例。我知道在java中可以使用
new
操作符,但是我如何在c中模拟这种行为呢?传统上,我会想到以下几点:

linked.h中的代码

typedef struct linked_list{
//assuming node type is implemented
node *next_node; 
}
linked.c中的代码

linked_list *link = NULL;
link = malloc(number_nodes);
link->node_value = 10;

你能提供的任何帮助对我都非常有帮助,因为我很难理解这个概念

malloc
需要知道要分配多少字节,因此需要将节点数乘以一个节点的大小(以字节为单位)

更改:

link = malloc(number_nodes);

或者,如果您只需要一个结构:

link = malloc(sizeof(*link));

malloc
需要知道要分配多少字节,因此需要将节点数乘以一个节点的大小(以字节为单位)

更改:

link = malloc(number_nodes);

或者,如果您只需要一个结构:

link = malloc(sizeof(*link));

如果您需要足够的内存来存储一个
结构链接列表
,只需

struct linked_list * mylist = malloc(sizeof(*mylist));
mylist -> next_node = NULL;
对于要添加的每个节点,必须执行以下操作

struct node * mynewnode = malloc(sizeof(*mynewnode));
mynewnode -> ... = ...; // fill in the data you have
mynewnode -> next_node = mylist -> next_node;
mylist -> next_node = mynewnode;

您应该保持所有节点的内存相互独立,以便可以释放它们。

如果您想为一个
结构链接列表
提供足够的内存,只需

struct linked_list * mylist = malloc(sizeof(*mylist));
mylist -> next_node = NULL;
对于要添加的每个节点,必须执行以下操作

struct node * mynewnode = malloc(sizeof(*mynewnode));
mynewnode -> ... = ...; // fill in the data you have
mynewnode -> next_node = mylist -> next_node;
mylist -> next_node = mynewnode;

您应该保持所有节点的内存相互独立,以便可以释放它们。

谢谢,但这将为我提供一个实际的实例?这将为您提供
链接列表的
节点数
实例,这可能是您实际想要的,也可能不是您真正想要的。哦,不,我只想要一个实例。对于一个链表,我的印象是我必须分配与链表相同的内存。因此,我将节点数传递给mallocWell,您发布的代码片段有些混乱,因此很难猜测您的实际意图是什么。您可能想学习一本关于C的好书中的一些链表代码,以便更好地全面了解您需要做什么。好的,如果我只想为链表的一个实例分配足够的内存,其中包含未知数量的节点。我该怎么做?谢谢,但这将为我提供一个实际的实例?这将为您提供
链接列表的
节点数
实例,这可能不是您真正想要的。哦,不,我只想要一个实例。对于一个链表,我的印象是我必须分配与链表相同的内存。因此,我将节点数传递给mallocWell,您发布的代码片段有些混乱,因此很难猜测您的实际意图是什么。您可能想学习一本关于C的好书中的一些链表代码,以便更好地全面了解您需要做什么。好的,如果我只想为链表的一个实例分配足够的内存,其中包含未知数量的节点。我该怎么做?