2017-09-18 62 views
-4

如果我们定义一个全局变量 int x; 和函数体内部定义了另一个变量int x;会怎样。如何引用一个全局变量与函数体内的本地变量同名?

函数'x'内部总是引用局部变量'x'。现在,如果用户必须在非常函数内引用全局变量x,那么如何实现这一点?

+0

为什么被标记为C和Python? –

+0

在C你不能。如果您隐藏了一个符号,那么无法访问它。 –

+0

为什么你需要与变量相同的名字? –

回答

2

由于您的问题被标记为“C”,我将回答有关该语言。其他语言可能会提供语法糖或机制来做你想做的事。

定义使用可变存在于更大范围的名称的变量称为遮蔽:内定义阴影外一个。

下面是一个例子:

int x = 42; 

int main() { 
    int x = 0; // Here, `x` shadows the global `x`. 
    printf("%d\n", x); // Prints '0' 
} 

在C中,没有办法来获得被遮蔽的变量的值。

在风格计划中,阴影通常被认为是一种不好的做法,因为它会让您的代码更清晰,更难以重构。

+0

正确。请将“据我所知”更改为“In C”,因为C无法获得阴影变量。 –

+0

感谢您的确认。 :) – RichouHunter