【register/auto的比較分析】

#include <iostream>
using namespace std;
int main(){
int i,sum=0;
for(i=0;i<=100;i++)
sum+=i;
cout<<"The sum="<<sum<<endl;
}
#include <iostream>
using namespace std;
int main(){
register int i;
int sum=0;
for(i=0;i<=100;i++)
sum+=i;
cout<<"The sum="<<sum<<endl;
}
<span style="font-family: 'Times New Roman'; font-size: 18px; background-color: rgb(255, 255, 255);">前边程序中的int i是默认的自己主动变量(auto),以下  register int i是寄存器变量</span>



register/auto差别

自己主动变量在程序调用的时候是分配暂时的存储空间,调用的时候也是从内存中调用的。这也是和register最大的不同,register变量的值是存放在CPU中的寄存器中,调用时直接从寄存器中取出參加运算。存放在寄存器中的变量值调用须要的时间短。节省内从,如上面的简单程序用auto变量和register变量时没有多大差别的,在大型程序中这样的节约才干体现的出来。

register定义

为提高运行效率。C++语言同意将局部变量的值放在运算器中的寄存器里,须要时直接从寄存器中取出參加运算。不必再到内存中去存取。这样的变量叫做寄存器变量,用关键词register作说明为提高运行效率。C++语言同意将局部变量的值放在运算器中的寄存器里,须要时直接从寄存器中取出參加运算。不必再到内存中去存取,这样的变量叫做寄存器变量,用关键词register作说明。

【auto类型(普通)static局部变量有三点不同】

1. 存储空间分配不同,auto类型分配在栈上,属于动态存储类别,占动态存储区空间。函数调用结束后自己主动释放。而static分配在静态存储区,在程序整个执行期间都不释放。两者之间的作用域同样。但生存期不同。

2. static局部变量在所处模块的初次执行时进行初始化工作,且仅仅初始化一次。

3. 对于局部静态变量,假设不赋初值,编译期会自己主动赋初值0或空字符;而auto类型的初值是不确定的。(对于C++中的class对象例外,class的对象实例假设不初始化,则会自己主动调用默认构造函数。无论是否是static类型)

C++ auto 与 register、static keyword 浅析的更多相关文章

  1. auto, extern, register, static

    对于一个数据的定义,需要指定2中属性: 存储类型和数据类型: static int a; auto char c; register int d; 1 auto 2 extern 3 register ...

  2. 2、C语言关键字-auto register static

    文件限定符的作用: 1.auto : 局部变量,修饰的变量在栈中定义.动态内存,随着函数的结束,变量占用的内存空间也随之释放. 2.register : 寄存器变量,请求编译器将此变量存于cpu寄存器 ...

  3. extern、static、auto、register 定义变量的不同用法

    首先得说明什么叫“编译单元”.每个 .c 文件会被编译为一个 .o 文件,这个就是一个编译单元.最后所有的编译单元被链接起来,就是一个库或一个程序. 一个变量/函数,只要是在全局声明的,链接之后都隐含 ...

  4. auto和register关键字

    关键字概述 很多朋友看到这儿可能会有疑问,往往其它讲C语言的书籍都是从HelloWorld,数据类型开始C语言学习的,为什么我们要从C语言的关键字开始呢?关于这点,我有两点需要说明: 本章节面向的读者 ...

  5. C++中extern “C”含义及extern、static关键字浅析

    https://blog.csdn.net/bzhxuexi/article/details/31782445 1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C ...

  6. objective-c: Functions and static keyword

    Functions function is a concept for C programming language, objective-c is entirely relies on C. To ...

  7. auto,register,static分析

    1.关键字auto auto是C语言中局部变量的默认类型,指明声明的变量在程序的栈上分配空间. 2.关键字static 指明变量的“静态”属性,局部变量存储在静态存储区: 文件作用标示符,只能在声明的 ...

  8. auto,register,static实例

    #include <stdio.h>int main() {    auto int i = 0;    register int j = 0;    static int k = 0;  ...

  9. C语言中auto,register,static,const,volatile的区别

    1)auto 这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是aut ...

随机推荐

  1. python3安装opencv及电子书籍(百度云)

    不能直接  pip install opencv 正解: pip install opencv-python  记得:请确保网络良好!!!!! (1)这个是我学习的电子书籍:opencv-python ...

  2. 使用Latex插入数学公式(二)

    初级运算 关系运算符 希腊字母 集合运算符逻辑运算符 空格问题 矩阵格式 矩阵格式有三种: 无括号的矩阵 matrix 是 Latex 的矩阵命令,矩阵命令中每一行以 \\ 结束,矩阵的元素之间用 & ...

  3. cocos2dx游戏如何架构

    声明:此篇文章不介绍如何使用cocos2dx制作游戏.站在架构师的角度如果制作游戏. 以我多年的游戏开发经验,和其他技术积累, 市面的所谈的一些软件架构模式都不太适合游戏软件. 我指的架构模式,MVC ...

  4. Analysis Of The Causes Of Internal Symmetry Of Hydraulic Motor

    The main reasons why hydraulic motors have this symmetrical internal structure are as follows: The   ...

  5. Python tldextract模块

    最新发布的 PyPI: pip install tldextract 或者最新的开发版本: pip install -e 'git://github.com/john-kurkowski/tldext ...

  6. source collection list

    1.Anaconda:http://www.cnblogs.com/xiaoming123abc/p/6970890.html https://conda.io/docs/help-support.h ...

  7. Jupyter IPython dead kernel and do not restart

    本人遇到的情况:dead kernel & try to restart failed 查看CMD发现这个库安装有问题 解决办法 1.pip uninstall backports.shuti ...

  8. ffmpeg处理网络流

    最近遇到好几个人在问ffmpeg如何处理网络流,刚好前段时间也在做这方面,抽空整理了下,把主要代码发出来,希望对大家有用.为简单处理,我这里只简单介绍UDP接收TS流,其实只要是socket接收的都可 ...

  9. [BZOJ] 1037 [ZJOI2008]生日聚会

    Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3007 Solved: 1795 [Submit][Status][Discuss] Descript ...

  10. Windows下Eclipse+PyDev安装Python开发环境

    .简介 Eclipse是一款基于Java的可扩展开发平台.其官方下载中包括J2EE方向版本.Java方向版本.C/C++方向版本.移动应用方向版本等诸多版本.除此之外,Eclipse还可以通过安装插件 ...