我写了一段代码来处理动态数组。想法是使用数组结构指针,其中数组的最后一个成员是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',尤其如此(看起来像一个)。 –