首先,你在做什麼動態分配數組是錯誤的。
我不確定你是否真的想要你寫的東西,也就是鏈接列表,或者你說的東西,這是動態分配的數組。
以下是你應該怎麼做動態分配的陣列。希望能幫助到你。 通過這樣做,您可以在內存用完之前,根據需要將盡可能多的整數添加到陣列中。你可以訪問使用數組方式排列,但有指針第一: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