【发布时间】:2017-01-05 18:51:41
【问题描述】:
我有一个用 c 编写的代码,基本上它接收一个数组并向后打印它。很基本的东西。代码如下:
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
int main(){
int n;
scanf("%d",&n);
int *arr = malloc(sizeof(int) * n);
for(int arr_i = 0; arr_i < n; arr_i++)
{
scanf("%d",&arr[arr_i]);
}
for(arr_i=n-1; arr_i >= 0;arr_i--)
{
printf("%d ",arr[arr_i]);
}
return 0;
}
第二个 for 循环出现以下错误:
solution.c:17:9: error: ‘arr_i’ undeclared (第一次在这个函数中使用)
for(arr_i=n-1; arr_i >= 0;arr_i--)
当我在第二个for 循环中的arr_i 之前插入int 时,错误消失了。
所以,我怀疑为什么即使我已经在第一个 for 循环中声明了 arr_i,它要求我在第二个 for 循环中再次声明它?
【问题讨论】:
-
如果在函数开始时将变量声明为单独的声明,它可以在任何需要的地方使用。