作用域说的是不是不对,内部的变量是重新定义的,而不是覆盖外部的变量?
来源:3-15 作用域
MLeo
2018-06-20 14:09:50
int a = 1;
@autoreleasepool {
float a = 1;
NSLog(@"%f",a);
}
3回答
axiba
2018-06-24
输出结果:1;
希望能解答你的疑惑
MLeo
提问者
2018-06-21
调试时看到两个相同类型的变量a,这个怎么说?
就好比子类和父类一样,子类重写了父类的属性,括号内是访问的子类的属性,而括号外访问的是父类的属性,并不是覆盖(重点)
imoocLovers
2018-06-20
①当我们在函数中或者代码块中定义的变量跟外部变量一样时,那么在函数或代码块中的变量是会将外部的变量给覆盖掉,只能使用函数中变量的值。
②在你的代码中,@autoreleasepool 中定义了一个float a = 1;虽然变量名也是a,因为作用域不同,所以在@autoreleasepool 中使用的是float a = 1;这个a的值。在这里实际上定义的是两个不同类型的变量。
③而在老师讲解的作用域中,是在@autoreleasepool大括号中又定义了一个int a ,与外部的变量是一样的,这个时候在内部使用的a的值将会覆盖掉外部的a的值。
相似问题