auto
- auto: 特点就是告诉编译器, 局部变量离开作用域自动释放 -----> 它是个废物
register
- 特点就是告诉编译器, 将局部变量存储到CPU寄存器中
- 好处就是访问的速度会更快, 但是在不同平台,不同编译器下, 会做不同的优化, 所以还是一句废话, 所以了解 --> 忘记
static
-
static对局部变量的作用
-
如果利用static修饰局部变量, 那么会将局部变量的存储区域从栈区移动到静态区
-
静态区只有程序结束才会释放
-
-
应用场景:
- 优化代码, 提升代码的效率
void calculate(int r){
// PI使用的概率非常大, 如果是一个局部变量的话, 每次调用都会重新开辟存储空间, 这样性能不好
// 如果PI是static的变量, 那么只会开辟一次, 那么性能就会好很多
static double pi = 3.1415926;
return r * r * pi;
}
-
static对全局变量的作用
-
定义一个内部的全局变量,
-
1.该变量只能在定义的文件中使用, 不能在其它文件中使用
-
2.并且该变量会独占一块内存空间
-
-
出现的原因:
- 全局变量的特性:
-
可以定义多个同名的全局变量, 多个同名的全局变量共享一块内存空间
-
哪怕不是同一个文件中的同名全局变量, 也会共享同一块内存空间,这样会导致数据混乱
-
- 全局变量的特性:
-
注意点:
-
局部变量如果没有初始化, 里面存储的是垃圾数据
-
全局变量如果没有初始会, 系统会自动初始化为0
-
extern
-
extern对局部变量的作用
-
extern用于声明一个变量, 声明变量并不会开辟存储空间
-
extern一般用于全局变量, 至今没见过有人用extern来修饰局部变量(原因:局部变量, 只有执行到那一行代码才会分配存储空间, 所以哪怕声明了 ,但是在使用时还是没有分配, 所以还是不能存储数据)
-
-
extern只用于全局变量, 不用于局部变量
- 原因:全局变量, 会随着程序的启动分配存储空间, 所以只要声明了, 使用时已经分配好了存储空间, 一定能够使用, 一定能够存储数据
extern和static对函数的作用
1.如果利用extern修饰函数, 代表这是一个外部函数, 其它文件中也可以使用,默认函数就是外部函数,所以extern在这里是个废物
2.如果利用static修饰函数, 代表这事一个内部函数, 只能在当前文件中使用
- 如果一些内部函数不想提供给外界使用, 那么就可以给函数添加一个static
- 注意点: extern和static必须写到函数的实现中才有效, 不能写到函数的声明中
- 并且如果一个函数已经被声明为static的了, 那么在.h文件中就不要编写该函数的声明了
多人开发
-
在企业开发中, 不可能将所有的代码都写到一个文件中,这样会导致文件内容较多, 不利于我们阅读和后续维护
-
而且在企业开发中大部分都是多人开发, 多人开发就是多个人一起写一个项目,所以也不可能多个人同时操作同一个文件
-
所以在企业开发中, 都是多人同时操作多个不同的文件 --> 多文件开发
如何进行?
- 一般情况下会将业务逻辑代码, 编写到.c文件中, 同时会将.c文件中需要暴露给外界使用的方式名称的声明写到.h文件中
- 编写了.c文件还需要编写一个.h文件的原因:业务逻辑代码是你编写的, 那么函数的作用,形参你最了解, 所以应该由你来编写
注意点
-
在企业开发中, 其它人不需要关系函数具体是如何实现的, 只需要关心如何使用这个函数即可
-
所以函数的业务逻辑和声明都应该让同一个人来完成
#include的作用:
- 将后面指定文件中的内容拷贝到当前文件中
2.<>从系统的环境变量中去拷贝, 一般情况下只有用到系统函数才使用<>
- ""从指定的路径中去拷贝, 一般情况下使用同事/自己编写的.h文件都用""
网友评论