首先,你在做什么动态分配数组是错误的。
我不确定你是否真的想要你写的东西,也就是链接列表,或者你说的东西,这是动态分配的数组。
以下是你应该怎么做动态分配的阵列。希望能帮助到你。 通过这样做,您可以在内存用完之前,根据需要将尽可能多的整数添加到阵列中。你可以访问使用数组方式排列,但有指针第一:darray->数组[0]
你链表,但是,不能用这种语法进行访问。
#include <stdio.h>
#include <stdlib.h>
#define INITSIZE 8
typedef struct dyarr{
int num;
int max;
int *array;
}arr;
arr* makeArr();
void add(arr*, int);
int main(int argc, char const *argv[]){
int t;
arr* darray = makeArr();
while(scanf("%d", &t) != EOF){
add(darray, t);
}
int i;
for(i = 0; i<darray->num; i++){
printf("%d\n", darray->array[i]);
}
getchar();
return 0;
}
arr* makeArr(){
arr* A = malloc(sizeof(arr));
A->max = MAXSIZE;
A->num = 0;
A->array = malloc(sizeof(int)*A->max);
return A;
}
void add(arr* a, int i){
if(a->num == a->max){
a->max *= 2;
a->array = realloc(a->array, a->max);
}
a->array[a->num++] = i;
}
来源
2013-02-26 02:28:08
prM
我可以在我的代码中更改什么以创建一个指向结构的指针数组? – 2013-02-26 02:13:57
你的标题说“分配指向结构的数组”,但是从你的代码中你似乎想要分配一个结构数组(而不是指针数组)。这是什么? – newacct 2013-02-26 08:26:21