如何将int函数的结果传递给void函数

  • 本文关键字:函数 void 结果 int c
  • 更新时间 :
  • 英文 :

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);

如果你有数组的指针,可以在任何地方调用

最新更新