gpt4 book ai didi

在数据结构内创建动态数组时 C 中的编译错误

转载 作者:行者123 更新时间:2023-11-30 20:14:37 25 4
gpt4 key购买 nike

所以我正在开发一个程序来实现 B 树,但我遇到了一些恼人的编译错误。 B 树结构正在工作,但我必须实现一个功能来接受树的顺序作为输入,这导致了一些问题。我遇到的错误是:

Prelim.c:29:38:错误:“=”标记之前应有“:”、“,”、“;”、“}”或“属性

Prelim.c:26:6:错误:灵活数组成员不在结构末尾

受影响的代码是:

struct bTreeNode {                      
int count;
int value[]; // This is line 26

struct bTreeNode *branch[];

struct bTreeNode *branch[order - 1] = malloc(sizeof(order)); // This is line 29
int value[order - 1] = malloc(sizeof(order));

};

我的问题分为两部分:第一,为什么会出现这些错误,第二,我怎样才能正确实现这个想法? (如果需要,我可以提供额外的代码,并且 order 被声明为全局变量)。非常感谢您的帮助!

最佳答案

  1. “为什么会发生这些错误”

    在您的代码中,branch 是一个 bTreeNode 指针数组,因此您必须告诉编译器 branch 的长度。试试这个代码:

    #define ORDER 10; // hard-coded
    struct bTreeNode {
    int count;
    int value[ORDER];
    struct bTreeNode *branch[ORDER - 1];
    int value[ORDER - 1];
    };

    并且您不能使用 struct bTreeNode 定义中的任何函数。

  2. “我怎样才能正确地实现这个想法”

    灵活数组是个好主意,尝试一下struct bTreeNode *branch[0],稍后再分配内存。抱歉我的英语很糟糕。 ^_^

关于在数据结构内创建动态数组时 C 中的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25757385/

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