首页 > 试题广场 >

局部变量能否和全局变量重名?

[单选题]
局部变量能否和全局变量重名?
  • 不能
推荐

答:能,局部会屏蔽全局。要用全局变量,需要使用"::"

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

编辑于 2015-02-03 16:35:08 回复(0)
在VS2012下虽然不会报错,但是会崩溃
发表于 2019-05-14 22:03:17 回复(0)
A,覆盖全局
发表于 2015-04-10 10:14:00 回复(0)
A
发表于 2015-04-08 17:00:28 回复(0)
今天一朋友解释道:强龙不压地头蛇
发表于 2018-04-12 22:03:11 回复(0)

结论:A 可以重名
但是局部变量会屏蔽全局变量,如果要使用全局变量,可以使用::
参考代码:

int a = 10;
int main()
{
    int a = 9;
    cout << a << endl; //输出a等于9
    cout << ::a << endl;  //输出a等于10
    return 0;
}
发表于 2020-06-28 15:50:20 回复(0)
可以,如果再定义局部变量的话,在这个局部变量的作用域中,就会屏蔽全局变量的作用。
最好不要起一样的名字

发表于 2015-10-20 14:04:55 回复(0)
全局变量和局部变量可同名,优先使用局部变量
发表于 2022-02-17 15:07:23 回复(0)
全局变量和局部变量同名的时候,若是在局部变量使用范围内,会优先使用局部变量。
发表于 2020-04-05 12:56:02 回复(0)
试了下,g++可以这么做
发表于 2018-01-29 22:58:49 回复(0)
这题有问题啊
编码规范是不允许这么用的
发表于 2015-09-09 16:47:13 回复(1)
A
全局变量和局部变量的作用域可见范围以及生存周期不同,可以重名
发表于 2015-01-18 16:35:07 回复(0)
就是说可以但是不推荐
发表于 2022-03-28 16:34:59 回复(0)