C函数变量作用域的疑问

2025-04-11 10:27:26
推荐回答(1个)
回答(1):

外层代码块的变量总是有效的,除非内层的代码对该变量名进行了重新定义,如果内层代码对外层代码块中的变量名进行了重新定义,那么在此内层代码块中,外层代码块的变量就被隐藏。

在此程序的第一个版本中,a在外层进行了定义,并且没有再被重新定义,所以,它在所有的内层代码块中都有效。

而在第二个版本中,由于在p1内部对a作了重新定义,所以隐藏了外层的同名变量。但是在离开p1后,a再次表示外层的变量,并且它的值是5,于是在p2中会输出125