const+static+extern关键字
这几个常量好好整理一下
一、const与宏
1、宏常见用法:
(1)、常见的字符串抽成宏
(2)、常见的代码抽成宏
2、const常量(也能修饰变量):
(1)、当有字符串常量的时候,苹果推荐使用const
3、const和宏的区别:
(1)、编译时刻:宏是预编译(#在c语言中表示预编译) const在编译时刻编译
(2)、编译检查:宏不会检查错误 const会检查错误
(3)、宏的好处:可以定义代码
(4)、宏的坏处:编译时间过长,因此常用的字符串用const修饰,代码只能用宏
注意:宏不会消耗过多内存,定义一个只会分配一份内存
4、const作用:
(1)、只修饰右边的第一个变量(只能修饰变量:基本变量、指针变量、对象变量)
(2)、const修饰的变量只读
//const修饰基本变量
int const i = 10;
const int j = 10;
//i = 20;
//只读//const修饰指针变量
int a = 10;
int b = 20;
int *const pa = &a;
//pa只读变量,*pa变量
int const *pb = &b;
//*pb只读变量,pb变量
const int *pc = &a;
//*pc只读变量,pc变量
int const * const pd = &b;
//*pd只读变量,pd只读变量
const int * const pe = &a;
//*pd只读变量,pd只读变量
//pa = &b;
//*pa = 30;
//const修饰对象变量
NSString * const name = @"name";
//name = @"dashabi";
5、const开发中使用: (1)、用来定义一个全局只读变量
(2)、在方法中一般定义只读参数
//修饰对象
- (void)test:(NSString * const)name{
//在函数中实现只读
//name = @"321";
}//修饰基本变量
- (void)test2:(int const)a{}//修饰指针变量
- (void)test3:(int const *)p{}
二、static和extern 1、static (1)、修饰局部变量
a、延长这个局部变量的生命周期,只要成员运行,局部变量就会一直存在
b、局部变量只会分配一次内存
(2)、修饰全局变量
a、只会修改全局变量的作用域,表示只能是当前文件类使用
//定义静态全局变量
static int i = 100;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//static修饰的变量,只会分配一次内存,只会在第一次运行的时候分配,不会每次运行都分配
static int i = 0;
i ++;
NSLog(@"%d",i);
}
2、extern / UIKIT_EXXTERN (1)、声明一个全局变量,不能定义变量
注意:extern修饰的变量不能初始化 (2)、使用场景:一般用于声明全局变量
当在别的类需要使用改类定义的全局变量的时候,只需言在别的类用extern声明即可
extern int aaa;
三、static和const一起使用 【const+static+extern关键字】static和const一起使用表示修饰静态全局只读变量,只能在当前文件夹使用
//const只修饰右边的第一个变量,所以要这样写
static NSString * const strings = @"hmp";
推荐阅读
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个小故事,我的思考。
- 9班|9班 刘志雪
- 这辈子我们都不要再联系了
- 猎杀IP
- 闲杂“细雨”
- 眼观耳听美食的日子
- 开花店的前景怎么样()
- 我眼中的佛系经纪人
- 拍照一年啦,如果你想了解我,那就请先看看这篇文章