
菜鸟:为什么在for循环里重复定义变量不会报错?
如下代码1,因为重复定义了两个变量a,编译器报错。voidmain(){inta;inta;return;}如下代码2,用for循环也是定义了两个变量a,编译器却不报错v...
如下代码1,因为重复定义了两个变量 a ,编译器报错。
void main()
{
int a;
int a;
return;
}
如下代码2,用for循环也是定义了两个变量a, 编译器却不报错
void main()
{
for(int i=0;i<2;i++)
{
int a;
}
return;
}
我的问题是:
1. 为什么用for循环重复定义的变量不会报错??????
2. 最终系统是怎样给代码2分配内存的? 在该函数的栈上 有两个相同名称的变量吗? 这样好像应该不可以吧。。。。。 展开
void main()
{
int a;
int a;
return;
}
如下代码2,用for循环也是定义了两个变量a, 编译器却不报错
void main()
{
for(int i=0;i<2;i++)
{
int a;
}
return;
}
我的问题是:
1. 为什么用for循环重复定义的变量不会报错??????
2. 最终系统是怎样给代码2分配内存的? 在该函数的栈上 有两个相同名称的变量吗? 这样好像应该不可以吧。。。。。 展开
16个回答
展开全部
需要知道变量的生存周期.
在for循环里面定义的变量也就是代码块(使用{ }框起来的语句)中变量的生存周期只在这个代码块中.代码块结束,其中的变量也就被回收了.for循环是重复运行一个代码块,但每次都是运行完整的,所以变量会被回收.如果你在for代码块中定义两个相同名字的变量也会报main中重复定义的错误
可以在局部代码块中定义外部已存在的变量.
在for循环里面定义的变量也就是代码块(使用{ }框起来的语句)中变量的生存周期只在这个代码块中.代码块结束,其中的变量也就被回收了.for循环是重复运行一个代码块,但每次都是运行完整的,所以变量会被回收.如果你在for代码块中定义两个相同名字的变量也会报main中重复定义的错误
可以在局部代码块中定义外部已存在的变量.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在for中这个int a寿命只有一次循环
即每次循环之后a的内存就被回收了 下次循环再分配一个
这个解释挺好。。
即每次循环之后a的内存就被回收了 下次循环再分配一个
这个解释挺好。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在代码一中int a;为全局变量且被定义了两次,所以会报错;代码二中第一个为全局变量,第二个为局部变量,也就是说两者的作用域不同,所以不会报错;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
‘代码1’里两个a明显重复了啊;c语言中不能重复定义一个变量,但可以重复使用一个变量。
‘代码2’里好像没有两个a耶!
‘代码2’里好像没有两个a耶!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在for循环中,遇},则变量的作用域就结束了,下次出现时是作为一个未定义的新的变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询