在main内的x属于局部变量没错吧, 为什么在if内x=100前面没有添加int之前main的x等于50 添加int后为什么加了int后main内的x就等于10了 ,没道理啊, main内的x是局部变量按道理if内的x有就是x=10的同一个变量, 在if内x=100前面加int也该等于50才对啊 if语句内, x=50 main方法内, x=10 fn1(): x=77
代码块作用域主要靠 { }来区分.
因此 if里面是一个作用域 ,在main里面 原本的x指向同一内存地址,只要是改变,x就会改变,后来加了int说明在if作用域重新开辟一个内存地址x,此时是另一个内存地址,main里面第一个x的内存地址由于命名相同被隐藏,不作用于if作用域中,但是作用于main之中,所以才会有了这种情况