A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//如果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 的内部变量了
//会被判定为重复定义 那就不用担心 变量被多次定义的问题了


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马