我寫了一段代碼來處理動態數組。想法是使用數組結構指針,其中數組的最後一個成員是NULL。我寫的代碼略有差異(使用整數而不是結構)。C動態數組問題
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
void list_add(int **list, int* value) {
for(int i = 0; true; i++) {
if(list[i] == NULL) {
list = realloc(list, (i+2) * sizeof(int*));
list[i] = value;
list[i+1] = NULL;
break;
}
}
}
void list_init(int **list) {
int* x;
for(int i = 0; i < 100; i++) {
x = malloc(sizeof(int));
*x = i;
list_add(list, x);
}
}
int main() {
int** l = malloc(sizeof(int*));
l[0] = NULL;
list_init(l);
}
調試時,我發現只有前3個整數被添加到列表中。我似乎無法弄清楚爲什麼會發生這種情況。有任何想法嗎?
你想分配多維數組? (在這種情況下是2)? – phoxis
是否有一些原因 - 除了想使用NULL終結符 - 使用一個存儲結構,每個int需要一個malloc?這是非常低效和麻煩的。 –
單字母變量名稱不好,'l',尤其如此(看起來像一個)。 –