C语言编译报错'i was not declared in this scope'解决方案咨询
报错原因
C语言的局部变量有严格的作用域限制,仅在定义它的代码块内部有效:
- 你在
fun1函数内定义的int i属于fun1的局部变量,只能在fun1函数体内使用 main函数内的for循环没有提前声明变量i就直接使用,因此触发i未在当前作用域声明的编译错误
修复方法
只需要在main函数中使用i之前完成变量声明即可,有两种常用实现方式:
- 在
main函数开头声明i:
#include <stdio.h> void fun1 (int a [], int length) { int i; for (i = 0; i<length; i++) a[i] = a[i] =a[i]; length = 2 * length; return; } int main() { int i; // 新增此行,声明main函数内使用的局部变量i int b[5] = {2, 3, 4, 5, 6}; fun1 (b, b[1]); for (i = 0; i<5; i++) printf("%d ", b[i]); return 0; }
- 如果你的编译环境支持C99及更高版本的C标准,也可以直接在for循环的初始化部分声明
i:
// 将main函数中的for循环修改为如下写法即可 for (int i = 0; i<5; i++) printf("%d ", b[i]);
内容的提问来源于stack exchange,提问作者SippinSizzurp
相关产品推荐
相关产品推荐

