【发布时间】:2016-10-16 11:33:55
【问题描述】:
我正在编写一个程序,它将做两件事
1.获取一个0到102之间的数字,将它们分开并存储在一个数组中
2.打印每个数字的数组
为此,我编写了一个 if-else 块,它每次都会完全根据当前整数值的大小来初始化一个数组,该整数值由名为 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块内声明,块完成后将无法访问。
标签: c arrays scope dynamic-memory-allocation