宏
宏的常见用法
- 常用的字符串要抽成宏
- 常用的代码抽成宏
#define DCScreenW [UIScreen mainScreen].bounds.size.width
#define DCUserDefaults [NSUserDefaults standardUserDefaults]
const
const:当有字符串常量的时候,苹果推荐我们使用const
const 的作用
- 仅仅是用来修饰右边的变量(只能修饰变量:基本变量,指针变量,对象变量)
- const修饰的变量,表示只读,不能修改
- const书写规范:一定要放在变量的左边 下面两种定义方法没有区别
int const a = 10;
const int a = 10;
int *const p = &a; //p是只读的
int const *p = &a; //*p是只读的
int const * const p = &a; //*p是只读的 ,p也是只读的
const开发中的使用场景
- 定义一个全局只读变量
- 在方法中定义只读参数
static
static作用
修饰局部变量
1.延长这个局部变量的生命周期,只要程序运行,局部变量就会一直存在局部;
2.变量只会分配一次内存,为什么?用static修饰的代码,在程序一启动就会执行,以后就不会再执行 ;修饰全局变量
1.只会修改全局变量的作用域,表示只能在当前文件内使用;
extern
extern作用
- 只能声明全局变量,不能定义变量
注意:extern修饰的变量不能初始化
extern使用场景:一般用于声明全局变量
总结
static和const修饰效果
- static和const修饰全局变量
- static修饰全局变量,修改作用域,表示在当前文件中使用
- const修饰全局变量,变量只读
- static和const一起修饰就是静态全局只读变量
const与宏的区别
- 编译时刻:宏:预编译(看见#就是预编译) const:编译时刻
- 编译检查:宏:不会检查错误 const:会检查错误
- 宏的好处:可以定义代码
- 宏的坏处:编译时间过长,因此常用的字符串使用const修饰
- blog:经常使用宏内存不会增加。只会分配一个内存,但是经常使用引用宏的指针,就会分配多个内存