在C语言中,相同作用域范围的局部变量不可以同名。所以,在不同作用域下,可以出现局部变量同名的情况。
1 在不同函数中。
函数不同,局部变量完全无关,自然可以使用相同的名字。
2 在同一函数中,但作用域不同。
局部变量的作用域是定义位置,到所在大括号结束。
所以只要两个局部变量属于不同的大括号中,就可以同名。
比如
void func()
{
int a;
while(1)
{
int a;
}
for(;;)
{
int a;
}
}
这里面,第一个a的作用域包含了第二个和第三个,而后两个之间作用域不相关。三个a分别属于三个不同的大括号,可以同名。
可以同名,例如:
在不同的两个循环内:
for(int i=0; i<5; i++)
{
......
}
for(int i=0; i<6; i++)
{
.......
}
按你的语意来说,答案是不可以的.
局部指的就是一个域,在同一个域内变量是不可以同名的.在VC++2005之前的版本中.for循环的条件名句是限制在for循环内的,不过2010后的VC++版本,在for循环条件内申请的变量在循环个再次申请了报错,
局部变量在不同的子函数中可以同名,但是在一个子函数中不能。
这个问题,其实举例子什么的都说都涵盖不清楚。可以通俗的这样说,在同一作用域内变量是不能重名的,原因很简单,要是重名了,编译器也不知道你调用的是哪个变量了。