📅  最后修改于: 2023-12-03 14:39:40.041000             🧑  作者: Mango
本问题涉及到变量的作用域和生命周期,即变量从定义到销毁的整个过程。在C语言中,变量的作用域和生命周期取决于其声明的位置、存储类型和作用域控制符等因素。
下面的代码片段:
#include <stdio.h>
int main()
{
int i;
for (i = 0; i < 10; i++)
{
int j = i*2;
printf("j = %d\n", j);
}
printf("j = %d\n", j);
return 0;
}
在编译时会报错 error: ‘j’ undeclared
,请解释错误产生的原因,并给出错误的修正方案。
错误产生的原因是:变量 j
的作用域只在 for
循环中,出了这个循环,j
就被销毁了,再次使用 j
就会出现未声明的错误。
修正方案:将变量 j
的声明放在循环的外面,即:
#include <stdio.h>
int main()
{
int i, j;
for (i = 0; i < 10; i++)
{
j = i*2;
printf("j = %d\n", j);
}
printf("j = %d\n", j);
return 0;
}
这样,变量 j
的作用域就扩大到了整个 main
函数。