const
1.const只修饰自己右边的变量.
2.被const修饰的变量是只读的,不可更改.
注:这就是为什么推荐使用const来替代宏定义,宏定义不会报错,并且是可变的
static
说明:
static修饰的变量只会分配一份内存
作用:
修饰局部变量
1.延长变量的生命周期,程序结束才会销毁
2.在同一作用域或文件中,只被初始化一次,
3.改变变量的作用域
4.会改变局部变量的存储方式, 变量的在内存中的存储方式
修饰全局变量
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元";
这样就可以外界读取到,但是不能改变