static, extern, const区别

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)  http://www.jianshu.com/p/2fd58ed2cf55  const,static,extern的区别 详细

2)  http://www.jianshu.com/p/3fa703e80720 const,static,extern的区别 粗略

你可能感兴趣的:(static, extern, const区别)