gpt4 book ai didi

c - array undeclared , first used in the function error during dynamic memory allocation 数组未声明,首次用于动态内存分配期间的函数错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:45 25 4
gpt4 key购买 nike

这里我正在编写一个程序,它会做两件事

1.取一个0到102之间的数,将它们分开存入数组

2.打印每个数字的数组

为此,我编写了一个 if-else block ,它每次都会根据当前整数值的大小来初始化一个数组,该整数值由名为 num 的变量表示

意思是,如果我有多个个位数,它将创建一个包含一个元素的数组,如果数字是两位数长,它将创建一个包含两个元素的数组。但是每当我运行代码时,我都会得到所提到的错误标题。

这可能是什么原因以及如何解决这个问题?

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int mirror(int num,int *arr,int i);

int main(){
int num=0,range=1;

while(num<102){
if(num<(int)pow(10,range))
{
int *arr =(int *)malloc(range*sizeof(int));
}else{
range+=1;
int *arr =(int *)malloc(range*sizeof(int));

}
int i = 0;
mirror(num,arr,i);
for(i=0;i<range;i++){
printf("%d ",arr[i]);
}
printf("\n");
num++;
}
}

int mirror(int num,int *arr,int i){

if(num == 0){
return 0;
}
arr[i] = num%10;
mirror(num/10,arr,++i);

}

最佳答案

指针 arr 的范围仅在 if-else block 内。所以,它在它之外是不可用的。在 if-else block 之外声明它,您将能够按原样使用它。

      int *arr;

if(num<(int)pow(10,range))
{
arr = malloc(range*sizeof(int));
}else{
range += 1;
arr = malloc(range*sizeof(int));

}

注意我已经删除了 malloc() 返回值的转换。它在 C 中是不必要的,而且容易出错。请参阅:http://c-faq.com/malloc/mallocnocast.html

关于c - array undeclared , first used in the function error during dynamic memory allocation 数组未声明,首次用于动态内存分配期间的函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40069770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com