register关键字
register关键字从c++11开始已经弃用了,但是在看SuRF代码(https://www.cnblogs.com/YuNanlong/p/10235793.html) 的时候,还是看到了这个关键字的使用,所以粗浅的学习了一下这个关键字,在此做一下记录。
register关键字指示编译器的优化器将变量的值存储在CPU的寄存器中,但具体是否存储依赖于编译器。使用register修饰的变量的类型应该是CPU支持的,比如有的CPU不支持浮点型,就不能用register修饰浮点型的变量。
register关键字在c和c++的编译器中的处理又有异同,具体如下:
在c和c++中,register关键字都只能用来声明块作用域和函数形式参数列表的对象,而不能用来声明静态局部对象或者全局对象,它们都存储在堆中,并且贯穿程序的整个生命周期,如果存储在寄存器中,显然不合适。
在c中,register关键字修饰的变量不能取地址,因为在寄存器中没有地址。而在c++中却可以对register关键字修饰的对象取地址,这时register关键字将不会起作用,该对象会被存储在内存中。
392 Love u
register关键字的更多相关文章
- C++ c++与C语言的区别(实用性增强,register关键字增强,全局变量检测增强)
//区别①:实用性增强 #include<iostream> using namespace std; //C语言中的变量都必须在作用域开始的位置定义!! //C++中更强调语言的“实用性 ...
- C++笔记010:C++对C的扩展——register关键字增强
register关键字:请求编译器让变量直接放到CPU内部寄存器里面,而不是通过内存寻址访问,速度快. 在C语言中,register修饰的变量不能取地址,去寄存器变量的地址在C语言里面是会出错的. i ...
- c++——register关键字、struct类型、bool关键字、三目运算符
register关键字增强 //register关键字 请求编译器让变量a直接放在寄存器里面,速度快 //在c语言中 register修饰的变量 不能取地址,但是在c++里面做了内容 /* //1 r ...
- C语言register关键字—最快的关键字 ---------------转自http://blog.sina.com.cn/s/blog_6a1837e90101128k.html
register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率.注意是尽可能,不是绝对.你想想,一个CPU 的寄存器也就那么几个或几十个,你要是定义了很 ...
- C语言register关键字—最快的关键字
register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率.注意是尽可能,不是绝对.你想想,一个CPU 的寄存器也就那么几个或几十个,你要是 ...
- C 语言 register 关键字
register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率.注意是尽可能,不是绝对.你想想,一个CPU 的寄存器也就那么几个或几十个,你要是定义了很 ...
- auto和register关键字
关键字概述 很多朋友看到这儿可能会有疑问,往往其它讲C语言的书籍都是从HelloWorld,数据类型开始C语言学习的,为什么我们要从C语言的关键字开始呢?关于这点,我有两点需要说明: 本章节面向的读者 ...
- (C/C++)register关键字
register:这个关键字的作用是请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率. 注意是尽可能,不是绝对.一个CPU 的寄存器也就那么几个或几十个,你要是定义了 ...
- C语言基础(8)-const,volatile,register关键字
1 const const是定义一个常量 2 volatile 代表定义一个变量,这个变量值可能在CPU指令之外被改变 volatile int a;//定义了一个volatile类型的int变量 通 ...
随机推荐
- FirewallD 快速使用文档
FirewallD简介 FirewallD是CentOS7系列上代替iptables管理netfilter的配置工具,提供图形化和命令行,使用python开发(新版中计划使用c++重写),提供图形化和 ...
- XML的介绍使用
一.什么是XML? XML,Extensible Markup Language,扩展性标识语言.文件的后缀名为:.xml.就像HTML的作用是显示数据,XML的作用是传输和存储数据. 据说,java ...
- Spring Boot(5)一个极简且完整的后台框架
https://blog.csdn.net/daleiwang/article/details/75007588 Spring Boot(5)一个极简且完整的后台框架 2017年07月12日 11:3 ...
- what is MAC address
MAC Address:media access control address A media access control address (MAC address) is a unique id ...
- 【rabbitmq】rabbitmq集群环境搭建
安装rabbitmq-server 总共有3台虚拟机,都安装有rabbitmq服务,安装过程可参考: [rabbitmq]Centos7 下安装rabbitmq 创建用户和vhost 说明: 此步骤不 ...
- centos7安装rabbitmq3.7.9
感谢此兄: https://blog.51cto.com/huwei555/2341513?source=dra (centos7 安装rabbitmq 3.7) 以root用户登录.cd /hom ...
- windows github 下载慢 修改hosts
参考:Github访问速度慢和下载慢的解决方法 [Github]windows上访问github慢的解决方法 方法:绕过dns解析,在本地直接绑定host,该方法也可加速其他因为CDN被屏蔽导致访问慢 ...
- Complete Binary Search Tree
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ...
- New Journey Prepare
1. 车载USB充电器. 2. 轮胎检测,备胎充气. 3. 给刹车片加润滑油. 3. 给娃办身份证. 4. 取公积金. 5. 入职准备材料.
- [org.springframework.context.annotation.ComponentScanBeanDefinitionParser] are only available on JDK 1.5 and higher 问题--MyEclipse设置JDK版本
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML doc ...