C++对C语言register的增强
2015-06-07 20:50
239 查看
register关键字 请求编译器让变量a直接放在寄存器里面,速度快
在c语言中 register修饰的变量 不能取地址,但是在c++里面做了内容
1
register关键字的变化
register关键字请求“编译器”将局部变量存储于寄存器中
C语言中无法取得register变量地址
在C++中依然支持register关键字
C++编译器有自己的优化方式,不使用register也可能做优化
C++中可以取得register变量的地址
2
C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。
3
早期C语言编译器不会对代码进行优化,因此register变量是一个很好的补充。
demo
在c语言中 register修饰的变量 不能取地址,但是在c++里面做了内容
1
register关键字的变化
register关键字请求“编译器”将局部变量存储于寄存器中
C语言中无法取得register变量地址
在C++中依然支持register关键字
C++编译器有自己的优化方式,不使用register也可能做优化
C++中可以取得register变量的地址
2
C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。
3
早期C语言编译器不会对代码进行优化,因此register变量是一个很好的补充。
demo
#include <iostream> int main() { register int a = 0; printf("&a = %x\n", &a); // c语言这里会报错 for (int i = 1; i < 1000; i++) { // 而对于这种频繁使用i的情况自动进行优化,将i放入寄存器中 printf("%d\n", i); } system("pause"); return 0; }
相关文章推荐
- c++ SQL Server ADO串连
- 在win8.1系统下运行VC++6.0
- C++对C的实用性增强
- C++对C的实用性增强
- 为什么我希望用C而不是C++来实现ZeroMQ
- C++实现反射机制(二)
- C++实现反射机制(一)
- Microsoft Visual C++ Runtime Library Runtime Error解决的方式
- 黑马程序员——OC语言基础——面向对象三大特性之多态
- c语言双向循环链表
- C++的简单“五子棋”游戏,只是核心代码,资源代码未添加
- C++作业
- 【leetcode c++】Reverse Integer
- 用一维数组实现栈(C++编程思想 p120)
- C++ tips: 类成员函数的参数默认值
- C语言里字符串的解析
- C++ 第8章 函数探幽
- C++ tips: std::stringstream 对象的复用
- C++ tips: throw和throw+对象的差别
- 【学习笔记】【C语言】逻辑运算符