我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详析C++中的auto

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详析C++中的auto

1.auto介绍

在早期,C/C++中 auto 的含义是:使用auto修饰的变量,auto是具有自动存储器的局部变量。
C++11中标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。

可以使用typeid().name 去打印对象的类型。

案例分析:

int TestAuto()
{
    return 2;
}

int main()
{
    int a = 10; 
    auto b = a; auto c = 'a'; 
    auto d = TestAuto();  
    cout << typeid(b).name() << endl; 
    cout << typeid(c).name() << endl;
    cout << typeid(d).name() << endl;
    return 0;
}

输出结果:

int
char
int

注意:

auto e; 无法通过编译,使用 auto 定义变量时必须对其进行初始化。

在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。

2.auto使用细则

auto 与指针和引用结合起来使用:

  • 用auto声明指针类型时,用 auto 和 auto* 没有任何区别
  • 用 auto 声明引用类型时则必须加&

案例分析:

int main()
{
    int x = 10;
    auto a = &x;
    auto* b = &x;
    auto& c = x;

    cout << typeid(a).name() << endl;
    cout << typeid(b).name() << endl;
    cout << typeid(c).name() << endl;

    *a = 20;
    *b = 30;
    c = 40;
    return 0;
}

输出结果:

int * __ptr64
int * __ptr64
int

在同一行定义多个变量:

在同一行定义多个变量时,这些变量必须是相同的类型,否则编译器将会报错。因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。

3.auto不能推导的场景

auto 不能作为函数的参数:

auto 不能直接用来声明数组:

void TestAuto()
{ 
    int a[] = {1,2,3}; 
    auto b[] = {4,5,6};
}

为了避免与C++98中的auto发生混淆,C++11只保留了auto作为类型指示符的用法
auto在实际中最常见的优势用法就是跟C++11提供的新式for循环,还有lambda表达式等进行配合使用。

到此这篇关于详析C++中的auto的文章就介绍到这了,更多相关C++中的auto内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详析C++中的auto

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C语言中auto,register,static,const,volatile的区别详细解析

以下是对C语言中auto,register,static,const,volatile的区别进行了详细的分析介绍,需要的朋友可以过来参考下
2022-11-15

c语言中auto的用法

auto 关键字用于声明 c 语言中的局部变量,具有以下作用:声明局部变量,默认为 int 类型,声明后自动初始化为 0。auto 关键字在 C 语言中的用法auto 关键字是 C 语言中用来声明局部变量的一种存储类说明符。局部变量在函数
c语言中auto的用法
2024-05-09

c语言中auto的作用

auto 关键字在 c 语言中声明局部自动存储变量,具有以下作用:局部范围:仅在声明变量的函数或块范围内可见。自动存储:存储在函数栈中,函数调用时分配内存,返回时释放。默认初始化:整数类型为 0,浮点数类型为 0.0,字符类型为空字符 '\
c语言中auto的作用
2024-04-29

一文详解C++中的引用与关键字auto

引用就是给一个已经存在的变量取一个别名,与变量共用一段内存空间。关键字auto一般可以用来自动识别类型,本文主要来讲讲二者的相关知识,需要的可以参考一下
2023-05-16

C++中auto关键字的使用

本文主要介绍了C++中auto关键字的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-15

C++中的for auto怎么使用

本篇内容主要讲解“C++中的for auto怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++中的for auto怎么使用”吧!C++中for auto的用法1.for(auto it
2023-07-05

C语言中auto怎么用

这篇文章主要为大家展示了“C语言中auto怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言中auto怎么用”这篇文章吧。你以为我说的自动变量类型auto吗?非也,我们知道C语言中其实也
2023-06-16

c语言中的auto有什么作用

在C语言中,auto是一种存储类别,用于声明局部变量。auto关键字用于隐式声明局部变量,默认情况下,所有局部变量都是auto类型的。auto关键字的主要作用是告诉编译器将变量存储在栈内存中,并在该变量的作用域结束时自动释放。也就是说,当变
2023-10-12

如何使用C++ 11中的auto和decltype

这篇文章将为大家详细讲解有关如何使用C++ 11中的auto和decltype,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++ 11中引入的auto主要有两种用途:自动类型推断和返回值占
2023-06-17

c语言中auto的作用是什么

在C语言中,auto是一种存储类说明符,用于声明自动变量。auto关键字可以用来显式声明变量,默认情况下所有局部变量都是自动变量,所以在C语言中一般很少使用auto关键字。自动变量是指在函数内部声明的变量,只在函数执行期间存在,并在函数执
c语言中auto的作用是什么
2023-10-28

C++中auto关键字怎么使用

今天小编给大家分享一下C++中auto关键字怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前提引入1.类型名,在绝大
2023-07-06

C语言中static和auto用法是什么

这期内容当中小编将会给大家带来有关C语言中static和auto用法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。static的第一种用法:定义为静态变量何为静态变量?存储在静态数据区的变量会在程序
2023-06-26

auto在css中的用法

auto是css中表示浏览器根据特定元素属性自动计算值的一个特殊值,可以在height、width、margin、padding、flex-grow和flex-shrink属性中使用,优点包括适应性、节省时间和响应式设计,但需要注意隐藏内容
auto在css中的用法
2024-04-28

C++中引用、内联函数、auto关键字和范围for循环详解

本文主要梳理了C++当中一些琐碎的知识点,包括有命名空间,缺省参数,引用,auto关键字和内联函数,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
2023-02-10

CSS中width和height的默认值auto与%示例分析

这篇文章主要介绍CSS中width和height的默认值auto与%示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!结论width的%:定义基于包含块(父元素)宽度的百分比宽度,会突破父级的限制width的au
2023-06-08

c语言auto和register的区别是什么

在C语言中,auto和register是两个关键字,用于声明局部变量。1. auto关键字:auto是默认的存储类别关键字,它用于声明局部变量。当你在函数或代码块中声明一个变量时,如果没有指定存储类别,那么默认为auto。auto关键字的作
2023-10-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录