【发布时间】:2016-10-06 13:01:59
【问题描述】:
我有一堆这样声明的结构:
typedef struct {
int docid;
int freq;
} pairs_t;
typedef struct {
char *word;
int numlines;
pairs_t *pairs;
int index;
int npairs;
} data_t;
typedef struct {
data_t *data;
int numwords;
} index_t;
我想在index_t 中创建一个结构数组,其中index_t 将保存data_t 中每个元素的信息。
我正在尝试
-
index_t内的数组data_t *data的 malloc 空间,用于保存结构数组。 - 结构数组需要时重新分配更多空间。
- 为结构数组中的每个元素分配足够的空间
我一直在玩这个,这就是我想出的:
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[]) {
int initialsize = 1;
int count = 0;
index_t *index;
index->data = (data_t*)malloc(initialsize * sizeof(data_t));
index->data = realloc(index->data, 2 * initialsize);
index->data[count] = malloc(sizeof(data_t));
count++;
return 0;
}
我只是想知道为什么我的 index->data[count] 分配会导致错误。这不是一个合适的程序,我只是想知道为什么这不起作用。我只是想看看在尝试更大的程序之前是否可以使所有这三个步骤都起作用。
错误是:
error: incompatible types when assigning to type "data_t" from type "void *"
任何形式的帮助将不胜感激。
【问题讨论】: