我有一大堆的声明如下结构:Dynammically分配多个结构的数组
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
每个元素的信息创建结构的数组。
我想
- malloc的空间阵列
data_t *data
内index_t
持有结构的数组。 - 当结构数组需要时,可以重新分配更多空间。结构的阵列中的每个元素
- 的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 *"
任何形式的帮助,将不胜感激。
'index'指向一个未知的位置。 – haccks
'data_t * data'不是数组! – Olaf
@Olaf哦,当然,是否'data_t ** data'是我所追求的? – RoadRunner