深谈auto变量

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

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

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

4.下面看cpp测试代码

 1 #include <iostream>
 2
 3 using namespace std;
 4
 5 /*
 6 自动变量:自动匹配类型
 7 auto  num = pc;通用传入接口
 8 decltype (num) anum;/通用备份接口
 9 */
10
11 void main()
12 {
13
14     auto a = 10;//将a解析为整数变量
15     auto b = 10.1;//将b解析为浮点数变量
16
17     int array[10];
18     int i = 0;
19     for (auto arr : array)//增强for循环
20     {
21         arr = i++;
22         cout << arr << endl;
23     }
24
25     cout << "a = " << a<<endl;//a = 10
26     cout << "b = " << b<<endl;//b = 10.1
27
28     double c = 11.9;
29     double *pc = &c;
30     auto  num = pc;//自动让num匹配pc类型,
31     cout << typeid(num).name() << endl;//typeid为一个结构体,这个结构体关于num,然后求其信息name,结果为double *
32     cout << typeid(c).name() << endl;//使用typeid(变量名).name()可以获取变量的类型信息
33     cout << typeid(pc).name() << endl;
34     //typeid(num).name() d; 这种做法不允许,应使用下面的做法
35     decltype (num) anum;//获取变量num的类型然后用这种类型定义一个变量anum
36     anum = &b;
37
38     cout << *anum << endl;
39     system("pause");
40
41 }

5.再来看看运行结果

时间: 2024-10-27 09:43:02

深谈auto变量的相关文章

一入python深似海--变量和对象

一.基本原理 Python中一切都是对象,变量是对象的引用.这是一个普遍的法则.我们举个例子来说,Python是如何来处理的. x = 'blue' y = 'green' z = x 当python执行上面第一句的时候,会在heap中首先创建一个str对象,其文本内容为blue,同时还创建一个名为x的对象引用,x引用的就是这个str对象.第二句也是类似:第三条创建了一个名为z的新对象引用,并将其设置为对象引用x所指向的相同对象.如下图的变化. 所以看出在Python中赋值操作符号"="

浅谈 PHP 变量可用字符

原文:浅谈 PHP 变量可用字符 先来说说php变量的命名规则,百度下一抓一大把:(1) PHP的变量名区分大小写;(2) 变量名必须以美元符号$开始;(3) 变量名开头可以以下划线开始;(4) 变量名不能以数字字符开头. 其实所有编程都类似的命名规范就是:1. 变量第一个字符最好是 字母或_,不能以数字开头2. 第二个字符开始允许 数字,字母,_ 好了,差不多就是这样了,但是这不是我们要说的重点.今天我们说说 PHP 变量的可用字符,不仅仅是 数字,字母,_ 哦. 前几天QQ上一朋友发我一个s

浅谈linux变量

1.什么是变量 一句话:变量即在程序运行过程中它的值是允许改变的量. 2.变量作用 1数据的存储格式 2参与的运算 3表示的数据范围 3.变量命名规则 1 命名要见名知意(命名的时候一定要注意,不能随便起用变量名,尽量不要出现像1,2,3,A,B等一些简单的字母或数字,一旦这个变量长时间不看,过来一段时间就不知当初为什么会定义这个变量了) 2 遵守命名规则(可以使用数字,下划线,字母作为命名,需要记住的是不能用数字作为变量名开头) 3 不能以程序中保留的字作为变量名(例如:PATH, SHELL

[百度空间] [原]再谈静态变量的初始化顺序

有一段时间我被静态变量的初始化顺序搞的焦头烂额,因为我用了singleton的懒惰初始化(lazy initialization)方式,即不需要显式创建singleton,在getsignleton的时候自动创建,并且在最后销毁对象..比如singleton使用了内存分配对象,如果这个对象先于singleton析构(后于singleton构造),那么singleton析构的时候内存分配器已经不存在了.最后发现我忽略了effctive C++的条款47,看来很多细节还是不是很深入的领悟. 关于其中

浅谈PHP变量的值类型和引用类型

看到网友在讨论PHP的&符号,要彻底理解它的用法,就有必要讨论一下变量的两种形式. PHP的变量在内存中是这样存储的,变量保存的并不直接是值的内容,而是地址.例如: $a = 1; 我们看起来,似乎变量$a直接存储了 1 这个值.而实际情况是,PHP解释器创建了变量$a,将值:1 存入内存中的某个地方,再将值的地址存到变量$a中. 需要取值时,先找到变量$a中的地址,再根据地址找到变量的值. 往下看: echo $a; 会输出1,PHP解释器会这样完成这一样代码:找到$a中存储的地址,根据地址找

趣谈Java变量的可见性问题

了解过多线程的我们,对synchorized,sleep和valatile都比较了解,但是当这三个名词和“Java变量得可见性”的话题联系在一起不知道大家是否还可以保持大脑清晰??? 最近看到一个关于Java变量可见性的问题,感觉比较新鲜就查了一些资料,下面分享给大家: 首先给大家看一段关于多线程的执行代码: package com.test; import java.util.concurrent.TimeUnit; public class test1 { private static bo

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

先来两个问题 很多时候,在直觉上,我们都会认为JS代码在执行时都是自上而下一行一行执行的,但是实际上,有一种情况会导致这个假设是错误的. a = 2; var a; console.log(a); 按照传统眼光,console.log(a)输出的应该是undefined,因为var a在a = 2之后.但是,输出的是2. 再看第二段代码: console.log(a); var a = 2; 有人会想到第一段代码,然后回答undefined.还有人会认为a在使用前未被声明,因此抛出Referen

从编程语言、算法、项目等层面深谈读研如何提高技术【转载】

你想进什么公司,和你读什么计算机方向,关系不是很大.只要是理工科的学生,面对技术岗位,其实机会是差不多的. 至于你想什么职位,那显然和你的专业/方向关系较大,比如说很多大数据职位,就明确表示要求你DM/ML/NLP/IR背景,但是这也只是说这些 学生可能更有优势些,事实上,数学和统计学出身的,很多搞这个非常牛逼的. 所以,不要问选什么导师,选什么方向:也不要问我的实验室很水老板很菜我还能找到好工作吗?你要问的是:我想毕业去互联 网公司,我读研的这几年是应该打酱油呢,还是打地沟油? 想找一个好的互

深谈社会贡献模式,全球首个NGO区块链项目NGOT提出新“贡献即挖矿”理念

(关注微信号[NGOT中文社区],即可领取价值580元的区块链行业图书) 7月15日,全球首个NGO区块链产品NGOT,在京举办产品发布会,并开创性的提出"贡献即挖矿"的新型社会参与模式.NGOT希望运用区块链技术,带动更多的社会组织与个人参与社会活动,扩散社会正能量.相信,在区块链技术的驱动下,未来将会出现更长远.更合理的社会贡献模式. 区块链技术,群众参与社会监督的途径区块链技术可理解为是一个分布式的记账账本,借助于区块链技术去中心化.不可篡改等天然特性,记录所有信息并实现无法篡改