文章内容为自己学习所得,写在简书上只为增加记忆,希望各位大神赐教,也不希望误人子弟,不喜勿喷!!!!谢谢
static
1>被static修饰的变量的生命周期会被延长,和应用程序的生命周期一样
2>被static修饰的变量只分配一次内存
3>程序开始运行时就会给static修饰的变量分配内存
4>被static修饰的局部变量作用域只在当前函数或方法中使用
5>被static修饰的全局变量作用域只在当前文件中起作用
extern
1>声明外部的全局变量(注意:extern只能用来声明,不能用来定义)
2>工作原理:先在当前文件下查找有没有对应的全局变量,如果没有就去其它文件中查找(static修饰的全局变量不能使用extern)
define
1>宏定义是在预编译里进行文本替换
2>没有类型区分,不会进行代码检查
3>大量使用宏定义会使编译的二进制文件增大,宏定义占用的只是代码段而已,只会分配一块内存空间
const
作用:1>使用const修饰的基本变量和指针变量
2>使用const修饰的变量不可以被改变,修饰完以后就会变成只读属性
3>const右边的变量不能被修改
四种写法:
1、static const NSString *Coder = @"xxx";
2、const NSString *Coder = @"xxx";
3、NSString const *Coder = @"xxx";
4、NSString * const Coder = @"xxx"。
全局常量:不管你定义在任何文件夹,外部都能访问(如:const NSString *Coder = @"x xx";)
局部常量:用static修饰后,不能提供外界访问(如:static const NSString *Coder = @"汉xxx";)
const右边的总不能被修改:
1.const NSString *Coder = @"xxx";
"*Coder"不能被修改, "Coder"能被修改
2.NSString const *Coder = @"xxx";
"*Coder"不能被修改, "Coder"能被修改
3.NSString * const Coder = @"xxx";
"Coder"不能被修改,"*Coder"能被修改
网友评论