在开发中我们经常会使用到static、const、extern等关键字,在此总结几个关键字的作用和区别。
一、const和宏的区别- 编译时刻
:宏是预编译(编译之前处理),const是编译阶段。- 编译检查
:宏不做编译检查,不会报编译错误,只是替换。const会编译检查会报编译错误。- 宏的好处
:宏能定义一些函数和方法而const不能。- 宏的坏处
:大量使用宏,容易造成编译时间过长,每次都需要重新替换。
#####二、const的作用- const仅仅用来修饰右边的变量(基本数据变量p,指针变量p)- 被const修饰的变量是只读的。#####三、const开发中使用场景:- 提供一个方法,这个方法的参数是地址,里面只能通过地址读取值,不能通过地址修改值- 提供一个方法,这个方法的参数是地址,里面不能修改参数的地址。#####四、static和extern简单使用- static的作用
- 修饰局部变量 - 延长局部变量的生命周期,程序结束才会销毁。 - 局部变量只会生成一份内存,只会初始化一次。 - 改变局部变量的作用域。 - 修饰全局变量 - 只能在本文件中访问,修改全局变量的作用域,生命周期不会改 - 避免重复定义全局变量- extern作用:
- 只是用来获取全局变量(包括全局静态变量)的值,不能用于定义变量- extern工作原理:
- 先在当前文件查找有没有全局变量,没有找到,才会去其他文件查找。*#####五、static与const联合使用- static与const作用:
- 声明一个只读的静态变量- 开发使用场景:
- 在一个文件中经常使用的字符串常量,可以使用static与const组合#####六、extern与const联合使用 - 开发中使用场景:
- 在多个文件中经常使用的同一个字符串常量,可以使用extern与const组合。- 原因:
- static与const组合:在每个文件都需要定义一份静态全局变量。 - extern与const组合:只需要定义一份全局变量,多个文件共享。- 全局常量正规写法:
- 开发中便于管理所有的全局变量,通常搞一个GlobeConst文件,里面专门定义全局变量,统一管理,要不然项目文件多不好找。由于本文本原意是总结视频内容,但后来发现作者原文在此写下地址【如何正确使用const,static,extern】|那些人追的干货