1.c++中有一个关键字auto,c语言也有这么一个关键字,但是两者的意义大不相同。

2.c++中用auto定义的变量自动匹配赋值号右边的值的类型,具有自动匹配类型的作用,而c语言中auto只是声明一个变量为自动类型,说明这个变量的代码块生存期和分配在栈上,并且不能用来定义变量。

3.c++中auto可以起到泛型的作用,你不管给我传什么类型,我都可以识别,而且按类型使用这个变量。

4.下面看cpp测试代码

 #include <iostream>

 using namespace std;

 /*
自动变量:自动匹配类型
auto num = pc;通用传入接口
decltype (num) anum;/通用备份接口
*/ void main()
{ auto a = ;//将a解析为整数变量
auto b = 10.1;//将b解析为浮点数变量 int array[];
int i = ;
for (auto arr : array)//增强for循环
{
arr = i++;
cout << arr << endl;
} cout << "a = " << a<<endl;//a = 10
cout << "b = " << b<<endl;//b = 10.1 double c = 11.9;
double *pc = &c;
auto num = pc;//自动让num匹配pc类型,
cout << typeid(num).name() << endl;//typeid为一个结构体,这个结构体关于num,然后求其信息name,结果为double *
cout << typeid(c).name() << endl;//使用typeid(变量名).name()可以获取变量的类型信息
cout << typeid(pc).name() << endl;
//typeid(num).name() d; 这种做法不允许,应使用下面的做法
decltype (num) anum;//获取变量num的类型然后用这种类型定义一个变量anum
anum = &b; cout << *anum << endl;
system("pause"); }

5.再来看看运行结果

深谈auto变量的更多相关文章

  1. 浅谈JavaScript变量声明提升

    前段时间阿里实习生内推,一面就被刷了,也是郁闷.今天系统给发通知,大致意思就是内推环节不足以了解彼此,还可以参加笔试,于是赶紧再投一次.官网流程显示笔试时间3月31日,时间快到了,开始刷题.网上搜了一 ...

  2. 浅谈 PHP 变量可用字符

    原文:浅谈 PHP 变量可用字符 先来说说php变量的命名规则,百度下一抓一大把:(1) PHP的变量名区分大小写;(2) 变量名必须以美元符号$开始;(3) 变量名开头可以以下划线开始;(4) 变量 ...

  3. 在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP

    如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...

  4. 1-浅谈 python变量

    浅谈 python变量 python变量概念 程序执行的过程中,很多数据都在变化的过程,我们需要一种机制把这种变化体现出来,变量是我们记录这种变化的方式. python以及其它各种语言的变量 ,其作用 ...

  5. 谈javascript变量声明

    之前的面试中遇到过一道面试题 var a =10;(function(){ console.log(a); var a =20;})() 短短5行代码log的结果是什么? 如果把var a = 20; ...

  6. 浅谈JS变量声明和函数声明提升

    先来两个问题 很多时候,在直觉上,我们都会认为JS代码在执行时都是自上而下一行一行执行的,但是实际上,有一种情况会导致这个假设是错误的. a = 2; var a; console.log(a); 按 ...

  7. 趣谈Java变量的可见性问题

    了解过多线程的我们,对synchorized,sleep和valatile都比较了解,但是当这三个名词和“Java变量得可见性”的话题联系在一起不知道大家是否还可以保持大脑清晰??? 最近看到一个关于 ...

  8. 浅谈js变量作用域

    变量的作用域也是前端面试题常考的一个问题,掌握下面几个规律可以帮你更好的理解js的作用域. 1.作用域优先级遵循就近原则,函数内部的作用域优先级大于外部 var a=456; var b=111; f ...

  9. 浅谈Java变量的初始化顺序详解

    规则1(无继承情况下):对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器证明代码: 复制代码 代码如下: p ...

随机推荐

  1. 源码剖析Django REST framework的认证方式及自定义认证

    源码剖析Django REST framework的认证方式 在前面说过,请求到达REST framework的时候,会对request进行二次封装,在封装的过程中会对客户端发送过来的request封 ...

  2. js获取url地址栏参数

    前端开发中经常会遇到需要获取url地址栏参数问题 方法如下: function getQueryStringByName(name){ var src = "www.baidu.com?na ...

  3. Docker技术浅谈:私有化部署的优势以及在顶象内部的应用实践

    顶象全景式业务安全风控体系基于新一代风控体系构建,并采用Docker技术进行私有云和公有云部署.本文主要和大家分享下Docker容器技术和顶象风控系统私有化部署的优势以及Docker容器技术在顶象内部 ...

  4. 这些工具对html5开发有很大帮助

    如今H5已经在IT这块很热门,所以也就有越来越多的人自学或是报名培训班学习H5,今天写一篇关于当下html5开发工具有哪些?哪个更好一些? 浅谈2017年html5开发工具哪个好: 1.Adobe D ...

  5. Akka(39): Http:File streaming-文件交换

    所谓文件交换指的是Http协议中服务端和客户端之间文件的上传和下载.Akka-http作为一种系统集成工具应该具备高效率的数据交换方式包括文件交换和数据库表行的上传下载.Akka-http的数据交换模 ...

  6. 设置SO_RECVBUF和SO_SENDBUF套接字选项

    控制套接字的行为(如修改缓冲区的大小). int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) ...

  7. 用python批量修改文件名

    从youtube上当下来百来首mv,每个都需要去掉视频,这还挺好弄得,格式工厂一弄就完了,但是文件名,都带有乱七八糟的*啥的巴拉巴拉的,咋修改啊,几百首总不可能一个一个rename吧 #批量修改文件名 ...

  8. Delphi 7中对StretchBlt, StretchDIBits, DrawDibDraw, BitBlt 的性能测试 - 原创

    我的天哪,上一篇博文是2年前的事情了.看来又虚度了2年光阴,继续学习... 本文算是副产品,正品是利用FFmpeg从任意视频中生成GIF片段的小程序,等写完了再发.不为别的,只是为了给儿子做动图,且看 ...

  9. PHP实现的进度条效果详解

      <?php //防止执行超时 set_time_limit(0); //清空并关闭输出缓存 ob_end_clean(); //需要循环的数据 for($i = 0; $i < 188 ...

  10. C#的数据类型总结(2):decimal ,double,float的区别

    1> 三者是精度不同的浮点数,如下图 参见:https://docs.microsoft.com/zh-cn/dotnet/articles/csharp/language-reference/ ...