我试图制作一个在程序运行时调整大小的数组。我已经了解了 malloc 和 realloc 函数,但似乎我显然弄错了什么。这是我编写的函数,它根据循环产生的周期数创建一个数组。
int* flexibleArray() {
int *arrayFlex = NULL;
int number=0, cnt=0;
while (number!=-1) {
printf("nInsert the variable: ");
scanf("%d", &number);
if (number==-1){
break;
}
cnt+=1;
arrayFlex = realloc(arrayFlex, cnt * sizeof(int));
arrayFlex[cnt-1] = number;
}
return arrayFlex;
}
我试图阅读我在互联网上找到的有关它的文档,然后我无法在重新分配后检索新数组。
int *array;
array = flexibleArray();
int arraySize = (sizeof(array))/(sizeof(int));
for(int i=0; i<arraySize; i++) {
printf("%d ", array[i]);
}
基本上,这就是我测试函数的地方,看看它是否做了它应该做的事情。
我是C的新手,对不起,伙计们。谢谢
这样的事情应该可以做到。
int* flexibleArray() {
int *arrayFlex = NULL; // needs to be a pointer
int number=0, cnt=0;
while (number!=-1) {
printf("nInsert the variable: ");
scanf("%d", &number);
if (number==-1){
break;
}
cnt+=1;
arrayFlex = realloc(arrayFlex, cnt * sizeof(int));
arrayFlex[cnt-1] = number;
}
return arrayFlex;
}
编辑:修正错别字。