const
1.const只修饰自己右边的变量. 2.被const修饰的变量是只读的,不可更改. 注:这就是为什么推荐使用const来替代宏定义,宏定义不会报错,并且是可变的
static
说明: static修饰的变量只会分配一份内存
作用:
修饰局部变量
1.延长变量的生命周期,程序结束才会销毁 2.在同一作用域或文件中,只被初始化一次, 3.改变变量的作用域
修饰全局变量
1.只要在同一个文件中,变量的生命周期不会改变,也就是指针所指向的地址不会改变 2.避免重复定义全局变量: static限制了变量的作用域为当前文件, 其他文件可以定义一个相同的static变量, 如果没有static修饰, 在其他文件中定义了相同名称的全局变量, 会报错.
extern
作用:
extern的作用:声明一个全局变量,不能定义变量 extern的原理:现在当前文件中查找全局变量,如果没有,再去其他文件中查找
##extern和const的组合使用
有的时候需要公开常量,就像你的女朋友需要知道今天你花了多少钱,但是你花钱的多少他是不会干涉的,所以这个时候你只需要给外界暴露出一个常量
@interface ViewController : UIViewController
//只给外界暴露出一个制只读变量money
extern NSString *const money;
@end
复制代码
#import "ViewController.h"
NSString *const money = @"100元";
复制代码
这样就可以外界读取到,但是不能改变