gpt4 book ai didi

c - 在 C 中声明结构中的 n 元素

转载 作者:行者123 更新时间:2023-11-30 20:34:46 27 4
gpt4 key购买 nike

在解决 codechef 的许多程序之一时,我遇到 a problem其中单个节点可以保存任意数量节点的地址。即一个节点可能有一个节点两个节点...或n个节点的地址。于是,我想到了使用链表。现在的问题是我只学到了双向链表,所以我可以编写程序来知道节点可以处理多少个地址。当我想到这一点时:

struct node
{
int n ;
for(int i=0;i<n,i++)
struct addrs[i] ;
}

但这似乎不合逻辑。因此,如果有人能告诉我如何编写一个节点可以处理 n 个地址的结构,那将会有很大帮助。

最佳答案

首先,这是您想要的(您可能需要根据您的编译器添加一些强制转换):

struct addrs;
struct node
{
int n;
struct addrs *a;
}


void init (struct *node, int n)
{
node->n = n;
node->a = malloc(sizeof(addrs)*n);
}

void destroy(struct *node)
{
node->n = 0;
free(node->a);
node->a = 0;
}
<小时/>

现在,你必须明白为什么

struct node
{
int n ;
for(int i=0;i<n,i++)
struct addrs[i] ;
}

不起作用。

struct 关键字意味着您定义一个保存结构化数据的新类型。其中不能有任何 C 可执行代码,因此不能有 for 循环。

此外,在编译期间必须知道结构的大小,如果您的示例有效,结构 node 的大小将取决于 n 并且之前无法知道程序被执行。

关于c - 在 C 中声明结构中的 n 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41549349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com