【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. python 实现代理服务器

    # encoding:utf-8 import socket import thread import re def getAddr(d): a = re.search("Host: (.* ...

  2. mfc 菜单

    创建一个基于对话框的工程,工程名为CreateMenu 为该对话框增加一个文件菜单项和测试菜单项,如下图所示   测试菜单项至少要有一个子菜单项 在对话框属性中关联该菜单 在resource.h中增加 ...

  3. C# Word 类库

    C# Word 类库 2009-08-06 22:10 14292人阅读 评论(11) 收藏 举报 c#objectstring文档microsoftexcel using System;using ...

  4. thinkphp5验证码处理

    1.确定项目目录>vendor>topthink>think-captcha目录存在 2.在config中添加验证码配置 //验证码配置 'captcha' => [ // 验 ...

  5. pycharm 破解

    亲测有效! http://blog.lanyus.com/archives/174.html 备注: 注册码破解链接:http://idea.lanyus.com/ 将下载的jar包放入PyCharm ...

  6. HDU - 4544 湫湫系列故事——消灭兔子(优先队列+贪心)

    题目: 最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏. 游戏规则很简单,用箭杀死免子即可. 箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子造成伤害,对应的伤害值分别 ...

  7. 笔试算法题(53):四种基本排序方法的性能特征(Selection,Insertion,Bubble,Shell)

    四种基本算法概述: 基本排序:选择,插入,冒泡,希尔.上述算法适用于小规模文件和特殊文件的排序,并不适合大规模随机排序的文件.前三种算法的执行时间与N2成正比,希尔算法的执行时间与N3/2(或更快)成 ...

  8. IDEA基本使用及配置(1)

    前言:现在IDEA用的人很多,我以前都是用Eclipse的,都说这个IDE比较智能.好用,于是学习一下. IDEA与Eclipse目录结构对比: IDEA中的Project相当于Eclispe中的wo ...

  9. 基于nvm的Node、NPM的版本管理(NPM permission error的解决)

    最近在使用npm过程中,发现全局安装总会遇到permission相关的错误,所以总是要在前面加sudo,还得不停输入密码. 懒惰使我进步,随手google了一下相关问题的解决方案,发现npm在官方文档 ...

  10. selenium的三种等待

    1. 强制等待 最简单粗暴,sleep(xx),不管你浏览器是否加载完了,程序都得等待xx秒,时间一到,再继续执行下面的代码,作为调试很有用,有时候也可以在代码里这样等待,不过不建议总用这种等待方式, ...