const
- const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p)
- 被const修饰的变量是只读的。
static
static修饰后,不能提供外界访问
1、修饰局部变量:
- 延长局部变量的生命周期,程序结束才会销毁。
- 局部变量只会生成一份内存,只会初始化一次。
- 改变局部变量的作用域。
2、修饰全局变量
- 只能在本文件中访问,修改全局变量的作用域,生命周期不会改
- 避免重复定义全局变量
extern
- 只是用来获取全局变量(包括全局静态变量)的值,不能用于定义变量
- 先在当前文件查找有没有全局变量,没有找到,才会去其他文件查找
static const 与 extra 小结
1、开发中static与const的联合使用 定义一个只能在当前文件访问的全局常量
static NSString*const cellID =@"cellIdentifier";
2、开发中static与const的联合使用 定义一个项目都能访问的全局常量
.h文件
extern NSString *const VERSION_INFO_CURRENT;
.m文件
NSString *const VERSION_INFO_CURRENT = @"currentversion";
#define
- 只是在预处理器里进行文本替换,没有类型,不做任何类型检查
总结:宏与常量区别
- 宏是预编译(编译之前处理),const是编译阶段
- 宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误
- 宏能定义一些函数,方法 const不能
- 使用大量宏,容易造成编译时间久,每次都需要重新替换