int *mA(int x){
int *arr[x], i = 0;
while(i<x){
arr[x]=i;
printf("%d ", arr[x]);
i++;
}return arr;
}
void fA(int *arr, int x){
int j=0;
while(j<x){
printf("%d ", arr[x]);
j++;
}
mA
是创建具有输入长度的数组的函数。如果用户输入5作为长度,则数组将被指定为1 2 3 4 5。我之所以把printf("%d ", arr[x]);
放在mA
函数中,是因为我想测试它是否成功地将0分配到数组中,结果它成功了。然而,在fA
中,它什么也没有显示。我正在使用引用调用方法,但由于我的知识有限,我无法解决此错误。如果mA
函数成功地将0分配到数组中,那么fA
函数应该能够读取并显示结果,但这里的问题是什么?
您的问题来自:
int *arr[x];
在这里,你可以创建一个指向未使用malloc
或任何分配器函数分配的数组的指针,然后你就不能返回它
int *arr[x];
// to
int *arr = malloc(sizeof(int) * x); // or any allocator function
当你使用这个数组或结束你的程序时,你需要释放分配给它的内存:
free(arr);
如果你有数组的指针,可以在任何地方调用