黑马程序员技术交流社区
标题: 关于static 在.h文件中声明的测试分析 [打印本页]
作者: 陆露 时间: 2015-10-27 17:05
标题: 关于static 在.h文件中声明的测试分析
//如果Person.h文件中设置了 static int a = 10; 的内部变量
//那么在引用了#import<Person.h>的源文件中将无法设置同样的 内部变量 或者全局变量 会被判定为重复定义
//当然你可以在main文件 和 person.m文件中使用
//mina文件中a 的内存地址 和 person.m文件中 的内存地址不同, 虽然他们都是引用person.h文件中声明的
//static int a = 10
//通过测试 在main 文件中 对a 的值进行修改 并不影响到 Person.m中文件的结果 他们俩在共用一个变量的时候
//这个变量在两个文件中的内存地址竟然不一样 变量被多次定义了;
main中 a+4 ==14
Person.m a - 4 == 6
main a地址 ==0x10000116c
person.m a地址 ==0x100001168
//结论,虽然看起来是在使用一个变量 其实并不是,每个使用static int a = 10 的文件中 都是独立的变量
//如果都使用的话就会造成变量多次定义 当多个源文件 同样引用了Persong.h的头文件 莫名其妙的就会被多开辟一个变量的内存
//所以在使用的时候一定要特别注意 尽量不要在.h文件中定义ststic 内部变量 一旦.h文件被其他源文件引用的话 引用他的文件就会无缘无故
//开辟内存, 会造成内存泄漏,针对与源文件引用.h文件
//如果在Person.m中定义的内部变量static int a = 10;
//Person.h 中就不能声明 int a = 10;的全局变量 和 static int a 的内部变量了
//会被判定为重复定义 那就不用担心 变量被多次定义的问题了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |