1、static const 全局变量 单利为什么用static 修饰 ,define ,extern

1)static,extern修饰全局变量 

static修饰的全局变量只能在当前文件中使用

全局变量和静态全局变量生命周期一样,都存储在静态存储区,在整个工程执行期间一直存在。作用域不同,全局静态变量作用域只在当前文件,非静态全局变量作用于是整个源程序。

static修饰的好处:1、不会被其他文件所访问,修改;2、其他文件可以使用相同名 字的变量,不会发生冲突。

2)static修饰的局部变量:存储区由栈变为静态存储区,生命周期变长,代码只执行一次。extern不能修饰局部变量

3)static修饰函数:函数的定义默认是extern,静态函数只能在声明他的文件中可见,

好处:其他文件可以定义相同名字的函数,静态函数不能被其他文件所用

4)苹果不建议我们将字符串常量抽象成宏,推荐我们使用const常量。

const和宏的区别:宏是预编译,const是编译阶段。宏不做编译检查,只是替换。但是宏能替换一些函数,方法。使用大量宏容易造成编译时间久,每次都要重新替换。被const修饰的变量是只读的。

使用场景:static和const的联合使用声明一个只读的静态变量,在一个文件中经常使用字符串常量,可以代替宏定义,在多个文件中使用extern和const

修饰函数的不可变参数

(5)extern 

作用:只是用来获取全局变量的值,(包括静态变量)不能用于定义变量,在多个文件中使用extern和const来代替宏定义

工作原理:现在当前文件中查找有没有全局变量,没有找到才会去其他文件中查找

单利使用static修饰,1、隔绝外部的修改 2、只初始化一次 3、定义单例需要写类方法,只有静态变量才能在类方法中使用

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容