因此,我试图将字符串值分配给数组中的对象。
目标代码是:
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*
)