C语言中的作用域隐藏

4

C语言是否有作用域隐藏?

比如,如果我有一个全局变量:

int x = 3; 

我能在函数或主函数中“声明”另一个int x吗?

4个回答

5
是的,这就是 C 的工作方式。例如:
int x;

void my_function(int x){ // this is another x, not the same one
}

void my_function2(){
  int x; //this is also another x
  {
    int x; // this is yet another x
  }
}
int main(){
  char x[5]; // another x, with a different type
}

如果在主函数中它不是int类型,而是其他类型,例如char数组[5] x,会怎样? - Belgi
在这种情况下,类型并不重要。如果您将x声明为int,然后通过声明一个新的类型为char [5]x来隐藏该声明,那么您只会看到后者char x [5] - Adiel Mittmann

3

是的,但有些编译器会抱怨或被要求抱怨。对于gcc,请使用-Wshadow


1

是的,C语言中存在作用域隐藏。
局部作用域中的变量将会隐藏同名的全局作用域中的变量。


0

是的,这是完全可能的。请查看this帖子,详细解释了C中各种范围。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接