5个修饰关键字
static
a. 修饰局部变量: 把这个局部变量变为静态变量, 程序启动就加载, 程序退出才收回
eg. static int num = 10; //初始化语句, 只执行一次
局部变量指: 只定义在某个函数内
b. 修饰全局变量: 代表这个全局变量只能在本文件中访问
全局变量指: 定义在#import 与 @interface 类名 () 之间
c. 修饰函数: 代表这个函数只能在本文件中访问
extern
a. 不能修饰局部变量
b. 修饰全局变量: 代表这个全局变量可在所有文件中访问
c. 修饰函数: 代表这个函数可在所有文件中访问 (如果函数前没有加修饰符, 则默认是extern)
auto
a. 只能修饰局部变量(局部变量默认就是auto)
b. 代表这个变量让系统自动管理, 什么时候该回收就回收
register
a. 只能修饰局部变量, 且不能用取地址符&
b. 代表把这个局部变量尽可能添加到寄存器存储 (寄存器容量小, 存储有限)
volatile
a. 易变的, 不稳定的, 说明变量在程序执行中可被隐含的改变
const修饰符 不可以修改
a. 修饰变量, 修饰谁, 谁就不可以修改
eg. const int a=10; //a不能改, 只读
int const *m; //m可以改, *m不能改
int *const n; //n不能改, *n可以改
const int *p; //p可以改, *p不可以改
const int *const q; //q不能改, *q也不能改
参考资料:
1) //www.greatytc.com/p/2fd58ed2cf55 const,static,extern的区别 详细
2) //www.greatytc.com/p/3fa703e80720 const,static,extern的区别 粗略