const与宏区别:
1.编译时刻: 宏:预编译 const:编译
2.编译检查: 宏不会做编译检查 const会
3.宏好处: 宏可以定义函数和方法 const不行
4.宏坏处: 大量使用宏,会导致预编译时间过长
宏:在开发中会把一些常用的变量的值定义成宏
但是苹果不太推荐我们使用宏,推荐我们使用const
/*
const作用:
1.用于修饰右边变量(基本变量,指针变量)
2.被const修饰变量只读(普通的变量是可读可写的)
*/
// 面试题
int * const p1; // p1:只读 *p1:变量
const int *p2; // p2:变量 *p2:只读
int const *p3; // p3:变量 *p3:只读
int const * const p4; // p4:只读 *p4:只读
const int * const p5; // p5:只读 *p5:只读
/*
开发中const使用场景
1.const替换宏,宏:在开发中将常用字符串或者基本数据定义成宏 -> const
2.修饰方法的参数,让方法的参数只读(即用const直接修饰方法的参数参数)
*/
—————————————————————————————————————————————————————————————————————————————
/*
static作用:
1.修饰局部变量,只要被static修饰局部变量,这个局部变量的生命周期就会延长,将局部变量从栈转移到静态区中(整个app运行过程中都在),作用域不变
分配时刻:程序一运行的时候就会分配内存
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// 运行到这一行的时候 才去分配内存 √
static int i = 0;
i++;
NSLog(@"%d",i);
}
/*
static应用场景:
当某个方法的调用频率非常高, 而该方法中更有些变量的值是固定不变的
那么这个时候就可以使用static来修饰该变量, 让该变量只开辟一次存储空间
这样可以提高程序的效率和性能
*/
2.修饰全局变量,只要被static修饰全局变量,这个全局变量只能在当前文件下使用
extern作用:
1.仅仅是用来声明外部全局变量
注意点:extern不能用来定义变量(注意:声明变量和定义变量的区别)
int a; ——> 这是声明变量a
int a = 0; ——>这是定义一个变量a
*/
—————————————————————————————————————————————————————————————————————————————
/*
static和const联合使用
static:修饰全局变量,全局变量只能在当前文件下使用
const:被它修饰的变量,是只读的变量
*/
static NSString * const isOn = @"isOn”;//isOn字符串对象是只能在当前文件下访问的只读的字符串对象(指针的指向不能改变),不能重新给isOn赋值(指针的指向发生改变)
—————————————————————————————————————————————————————————————————————————————
/*
开发中如果使用全局变量,最容易导致冲突
开发规范:只要定义全局变量,都不能在自己的类中定义,一般开发中,我们会搞一个公用文件去定义全局变量
*/
const和static的区别
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一.Static的作用详述 摘要:C语言中,static的字面意思很容易把我们导入歧途。本文将对C/C++中Sta...
- 版本记录 前言 无论是在C还是OC中,static、define、const和extern这几个词有时候会用到,尽...
- 在开发中我们经常会使用到static、const、extern等关键字,在此总结几个关键字的作用和区别。 一、co...
- 中国有句俗语:磨刀不误砍柴工。在平时的工作过程中,有时候不是很清楚这三者之间的区别和用法,到底什么时候用stati...