C 数组未声明,在动态内存分配期间首次在函数错误中使用
在这里,我写了一个程序,将做两件事 1.获取一个介于0到102之间的数字,将它们分开并存储在一个数组中 2.打印每个数字的数组 为此,我编写了一个if-else块,它将根据当前整数值的大小来初始化数组,当前整数值由名为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
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;
而(numpointerarr
的范围仅在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(numpointerarr
的范围仅在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
块内声明,在块完成后将无法访问。