宝马娱乐在线112222 > 网络应用 > 宝马娱乐在线C语言中的register关键字,register关键

原标题:宝马娱乐在线C语言中的register关键字,register关键

浏览次数:70 时间:2019-11-13

C语言中的register关键字,register关键字

在C语言中的register修饰的变量表示将此变量存储在CPU的寄存器中,由于CPU访问寄存器比访问内存快很多,可以大大提高运算速度。但在使用register时有几点需要注意。

1.用register修饰的变量只能是局部变量,不能是全局变量。CPU的寄存器资源有限,因此不可能让一个变量一直占着CPU寄存器。

2.register变量一定要是CPU可以接受的值。

4.不可以用&运算符对register变量进行取址。

5.register只是请求寄存器变量,不一定能够成功。

1.1,最宽恒大量的关键字----auto
auto:它很宽恒大量的,你就当它不存在吧。编译器在默认的缺省情况下,所有变量
都是 auto 的。
1.2,最快的关键字---- register
register:这个关键字请求编译器尽可能的将变量存在 CPU 内部寄存器中而不是通过内
存寻址访问以提高效率。注意是尽可能,不是绝对。你想想,一个 CPU 的寄存器也就那么
几个或几十个,你要是定义了很多很多 register 变量,它累死也可能不能全部把这些变量放
入寄存器吧,轮也可能轮不到你。
1.2.1,皇帝身边的小太监----寄存器
不知道什么是寄存器?那见过太监没有?没有?其实我也没有。没见过不要紧,见过就
麻烦大了。^_^,大家都看过古装戏,那些皇帝们要阅读奏章的时候,大臣总是先将奏章交
给皇帝旁边的小太监,小太监呢再交给皇帝同志处理。这个小太监只是个中转站,并无别
的功能。
好,那我们再联想到我们的 CPU。CPU 不就是我们的皇帝同志么?大臣就相当于我们
的内存,数据从他这拿出来。那小太监就是我们的寄存器了(这里先不考虑 CPU 的高速缓
存区)。数据从内存里拿出来先放到寄存器,然后 CPU 再从寄存器里读取数据来处理,处理
完后同样把数据通过寄存器存放到内存里,CPU 不直接和内存打交道。这里要说明的一点
是:小太监是主动的从大臣手里接过奏章,然后主动的交给皇帝同志,但寄存器没这么自觉,
它从不主动干什么事。一个皇帝可能有好些小太监,那么一个 CPU 也可以有很多寄存器,
不同型号的 CPU 拥有寄存器的数量不一样。
为啥要这么麻烦啊?速度!就是因为速度。寄存器其实就是一块一块小的存储空间,只
不过其存取速度要比内存快得多。进水楼台先得月嘛,它离 CPU 很近,CPU 一伸手就拿到
数据了,比在那么大的一块内存里去寻找某个地址上的数据是不是快多了?那有人问既然
它速度那么快,那我们的内存硬盘都改成寄存器得了呗。我要说的是:你真有钱!
1.2.2,使用 register 修饰符的注意点
虽然寄存器的速度非常快,但是使用 register 修饰符也有些限制的:register 变量必须是
能被 CPU 寄存器所接受的类型。意味着 register 变量必须是一个单个的值,并且其长度应小
于或等于整型的长度。 而且 register 变量可能不存放在内存中,所以不能用取址运算符“&”
来获取 register 变量的地址。1.3,最名不符实的关键字----static
不要误以为关键字 static 很安静,其实它一点也不安静。这个关键字在 C 语言里主要有
两个作用,C++对它进行了扩展。
1.3.1,修饰变量
第一个作用:修饰变量。变量又分为局部和全局变量,但它们都存在内存的静态区。
静态全局变量,作用域仅限于变量被定义的文件中,其他文件即使用 extern 声明也没法
使用他。准确地说作用域是从定义之处开始,到文件结尾处结束,在定义之处前面的那些
代码行也不能使用它。想要使用就得在前面再加 extern ***。恶心吧?要想不恶心,很简单,
直接在文件顶端定义不就得了。
静态局部变量,在函数体里面定义的,就只能在这个函数里用了,同一个文档中的其他
函数也用不了。由于被 static 修饰的变量总是存在内存的静态区,所以即使这个函数运行结
束,这个静态变量的值还是不会被销毁,函数下次使用时仍然能用到这个值。

计算机C语言中的关键字:register是什?

register
当声明对象有自动生存周期时,可以使用register修饰符。因此,register也只能用在函数内的声明中。
此关键字告诉编译器:此对象的存取应该尽量快,最好存储在CPU的寄存器中。然而,编译器不见得会这么做。
另外要注意的是,当一个对象声明为register,就不可使用地址运算符&了,因为它有可能被放到寄存器中。  

http://www.bkjia.com/Cyy/847123.htmlwww.bkjia.comtruehttp://www.bkjia.com/Cyy/847123.htmlTechArticleC语言中的register关键字,register关键字 在C语言中的register修饰的变量表示将此变量存储在CPU的寄存器中,由于CPU访问寄存器比访问内存快很...


本文由宝马娱乐在线112222发布于网络应用,转载请注明出处:宝马娱乐在线C语言中的register关键字,register关键

关键词:

上一篇:对深拷贝及浅拷贝的理解,拷贝理解

下一篇:没有了