C语言 局部变量能否和全局变量重名?
时间: 2024-08-16 11:06:32 浏览: 100
在C语言中,局部变量和全局变量可以有相同的名称,这是允许的。这种现象被称为"隐藏"或"阴影"(shadowing)。当在一个函数内部声明同名的变量时,这个局部变量会遮盖(或隐藏)外部的全局变量,在该函数内部只能访问局部变量,除非显式使用`extern`关键字引用全局变量。
例如:
```c
int global_var = 5; // 全局变量
void func() {
int local_var = 10; // 局部变量,它隐藏了全局变量
// 函数内部只能通过 `global_var` 访问全局变量
}
func();
printf("%d\n", global_var); // 输出:5
```
然而,这并不影响全局变量在整个程序中的可见性。只是在函数内部,局部变量占据了这个名字。
相关问题
全局变量与局部变量重名
当全局变量与局部变量重名时,在函数内部使用该变量时,函数会以局部变量覆盖全局变量。也就是说,只有局部变量会起效果。而在函数外部使用该变量时,会使用全局变量。例如,在C语言中,如果在函数内部和全局范围都定义了同名变量,那么在函数内部使用该变量时会使用局部变量,而在函数外部使用该变量时会使用全局变量。 [1 [2 [3
阅读全文