因此,我试图将字符串值分配给数组中的对象。

目标代码是:

typedef struct BiTreeData_ {
    char* word;
    int start_word_count;
    int end_word_count;
    int start_ranking;
    int end_ranking;
} BiTreeData;


在我的主书中,我使用以下方法创建了一个指向BiTreeData的指针数组:

BiTreeData **dataarray;
dataarray=(BiTreeData**)malloc(sizeof(BiTreeData*)*maintree.size);


我尝试使用以下方法为结构中的变量之一分配值:

int z = dataarray[i]->start_word_count;


程序崩溃。任何帮助,将不胜感激。谢谢。

最佳答案

您的代码在这里

BiTreeData **dataarray;

dataarray=(BiTreeData*)malloc(sizeof(BiTreeData)*maintree.size);


BitTreeData*数组分配内存空间,但您没有为BitTreeData对象本身分配任何空间。您只有一个动态数组的指针指向未初始化的内存。

如果仅创建BitTreeData数组而不是指针,则可能会容易得多。您可以通过使用

 BiTreeData *dataarray;
 dataarray=(BiTreeData*)malloc(sizeof(BiTreeData)*maintree.size);


这只是创建一个BitTreeData数组-您可以像访问其他数组一样访问该数组中的每个项目(现在记住该数组是BitTreeData而不是BitTreeData*

07-26 00:44