一.关键字register
register——寄存器关键字,提到寄存器首先我们先了解一下电脑的存储设备:
图中三角形内的硬件,由下到上价格越来越高,速率越来越快,存储内存越来越低。
最早的时候,CPU在处理任务的时候都是直接从内存中拿数据,但是随着技术的快速进步,CPU的设计使得处理速度越来越快,而硬件的速度难以跟上CPU的发展速度,所以导致CPU的数据已经处理完,却还要等一段时间才能拿到下一个数据,使得性能越来越慢。那怎么办呢?于是就有了高速缓存和寄存器的出现,比内存快一些的高速缓存直接从内存中获取数据,比高速缓存快一些的寄存器再从高速缓存中获取数据,这样就大大减少了CPU获取数据的等待时间,提高了整体性能。
现在我们来看register关键字怎么用:
我设置了两个变量a,b。register就是建议把b=3存放在寄存器中,以便可以以更快的速度访问。但是当然只是建议,因为都这样定义的话,寄存器也没有那么多空间可以放,最后放不放还是由编译器进行决定的,如果是经常大量使用的话可以尝试着使用register。
二.关键字typedef
typedef 顾名思义是类型定义,这里应该理解为类型重命名。比如:
他的意思可简单理解就是重命名,上面就是把unsigned int重命名为u_int,比如大家把张三起个小名小三一样,张三是这个人,小三也是这个人。
三.关键字static
在C语言中,static是用来修饰变量和函数的:
1.修饰局部变量-静态局部变量
2.修饰全局变量-静态全局变量
3.修饰函数-静态函数
静态局部变量:
我定义了两个函数,test和test1,前者没用static,那么程序运行会出现什么结果呢
左边第一个运行的是test函数即没有用static,第二个是用test2函数用static修饰了局部变量a。我们可以看到,左边的a一直是2是因为引用函数test时又重新给a赋值为1,再++后就变成了2;而第二个很明显a就直接进行了累加处理而没有重新赋值1,这就说明:static修饰局部变量,把局部变量的生命周期变长
静态全局变量
全局变量具有全局属性是因为其具有链接属性,而static修饰全局变量就可以改变全局变量的连接属性,可以使它的作用域变小,仅仅局限于当前文件下,它的生命周期没变,因为其仍然存储在静态区上
静态函数
它的作用跟静态全局变量作用效果基本一样,都是改变其作用域,或者说改变函数的连接属性,将其原本的的外部链接属性变为内部链接属性