ios static 优点 作用 和 #define const 区别

本文详细解析了C/C++中static、const关键字的作用及应用,并介绍了如何利用extern与const结合来实现跨文件的常量共享,帮助读者理解这些关键字在实际编程中的重要性和用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

static 关键字的作用?

    1)第一个作用:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。

    2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。

    3)static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。

1、const与宏 #define 的区别:

1、编译时刻:宏是预编译(之前处理), const是编译阶段(之后处理)。
2、编译检查:宏不做检查,有错误不会提示, const会检查,有错误会提示。
3、宏的好处:宏能定义方法,const不能定义方法 只能用常量
4、宏的坏处:大量使用宏,容易造成编译时间久。
// 宏
#define DEMO @"www.baidu.com"

2、static与const结合使用

1、变量用来 staticconst声明了,如果试图修改由const修饰的变量,那么编译器就会报错。
2、苹果官方不推荐我们使用宏, 推荐使用const常量。
// 字符串常量
static NSString * const demo = @"www.baidu.com";

3、extern与const 结合使用

在开发中需要在多个文件中经常使用同一个字符串常量,可以使用externconst结合使用。
1staticconst 结合:在每个文件都需要定义一份静态全局变量。
2externconst结合:定义一份全局变量,多个文件都可以访问。 

有时候需要对外公开某个常量。比方说,你可能要在类代码中调用NSNotificationCenter以通知他人。用一个对象来派发通知,令其它欲接收通知的对象向该对象注册,这样就能实现此功能。
.h文件
extern NSString *const  Demo;

.m文件
NSString *const  Demo = @"www.baidu.com";

这样定义常量要优于使用#define预处理指令,因为编译器会确保常量值不变。一旦 .m 文件中定义好了,即可随处使用,而采用预处理指令定义常量可能会无意中修改,从而导致应用程序各个部分使用的值互不相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值