如何在c中创建结构的新实例
How to make a new instance of a struct in c
我是 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(number_nodes * sizeof(*link));
或者如果您只想要一个结构:
link = malloc(sizeof(*link));
如果你想要一个struct linked_list
足够的内存,你所要做的就是
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;
您应该保持所有节点的内存彼此独立,以便您可以释放它们。
我是 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(number_nodes * sizeof(*link));
或者如果您只想要一个结构:
link = malloc(sizeof(*link));
如果你想要一个struct linked_list
足够的内存,你所要做的就是
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;
您应该保持所有节点的内存彼此独立,以便您可以释放它们。