C 数组未声明,在动态内存分配期间首次在函数错误中使用

C 数组未声明,在动态内存分配期间首次在函数错误中使用,c,arrays,scope,dynamic-memory-allocation,C,Arrays,Scope,Dynamic Memory Allocation,在这里,我写了一个程序,将做两件事 1.获取一个介于0到102之间的数字,将它们分开并存储在一个数组中 2.打印每个数字的数组 为此,我编写了一个if-else块,它将根据当前整数值的大小来初始化数组,当前整数值由名为num 这意味着,如果我有一个一位数的数字,它将创建一个一个元素的数组,如果数字是两位数,它将创建一个两个元素的数组。但每当我运行代码时,我都会遇到问题标题中提到的错误 原因可能是什么?如何解决这个问题 #include<stdio.h> #include<std

在这里,我写了一个程序,将做两件事

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

}
#包括
#包括
#包括
int镜像(int num,int*arr,int i);
int main(){
int num=0,range=1;

而(numpointer
arr
的范围仅在if-else块内。因此,它在if-else块之外不可用。 在if-else块之外声明它,您就可以使用它了

      int *arr;

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

      }
int*arr;

if(numpointer
arr
的范围仅在if-else块内。因此,它在它之外不可用。 在if-else块之外声明它,您就可以使用它了

      int *arr;

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

      }
int*arr;

如果(num数组是
if/else
语句中的局部变量。您应该在
while
的外部块中放置数组声明,在条件块中放置赋值。

数组是
if/else
语句中的局部变量。您应该在
while
的外部块中放置数组声明,在条件块中放置赋值。).

arr
if
else
块内声明,在块完成后将无法访问。
arr
if
else
块内声明,在块完成后将无法访问。