如果有人在谈论用 C 编程语言解决问题,并且他们说动态创建的结构是可行的方法,那么他们可能指的是什么?这可能还有别的名字吗?
3 回答
该分配要求您为数据结构使用动态内存分配。您的程序可能不使用静态分配的内存,例如int array[65536];
. 相反,所有这些都需要使用 按需分配malloc/calloc/realloc
(并且应该使用 释放free
)。
C 允许您在程序运行时根据您的需要分配新内存(这就是为什么称为“动态分配”)。
例如:你有一个非常基本的结构,一个链表,但是你不知道在你的程序执行过程中需要多少个节点。因此,在您的代码中,您声明每次需要在列表中存储一个新节点时,程序必须占用这x量的内存并分配一个新节点(将附加到现有列表中)
typedef struct {
int datum;
Node *next;
} Node;
然后稍后您可以:
Node *new_node = (Node *)malloc(sizeof(Node);
以同样的方式,您可以在运行时释放内存:
free(new_node);
如果你的问题是How to create structure dynamically?
在不知道你想问什么的情况下,我只是给出一个答案,假设你只是在问这个问题。
动态数据结构是一种数据结构,它可以根据程序的需要通过从堆中分配和取消分配内存来改变大小 - 这个术语用于描述中央处理单元 (CPU) 在任何给定时间可用的未使用内存. 动态数据结构让程序员可以精确控制他或她的程序消耗了多少内存。当用 C 编程语言创建的动态数据结构从堆中分配内存块时,它使用指针将这些块链接在一起成为某种数据结构。当不再需要时,数据结构将向堆返回一块内存。这种回收内存块的系统使程序对内存的使用非常有效。