返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >详析C++中的auto
  • 721
分享到

详析C++中的auto

2024-04-02 19:04:59 721人浏览 安东尼
摘要

目录1.auto介绍2.auto使用细则3.auto不能推导的场景1.auto介绍 在早期,C/C++中 auto 的含义是:使用auto修饰的变量,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内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详析C++中的auto

本文链接: https://lsjlt.com/news/163108.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详析C++中的auto
    目录1.auto介绍2.auto使用细则3.auto不能推导的场景1.auto介绍 在早期,C/C++中 auto 的含义是:使用auto修饰的变量,auto是具有自动存储器的局部变...
    99+
    2024-04-02
  • C语言中auto,register,static,const,volatile的区别详细解析
    1)auto这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变...
    99+
    2022-11-15
    register static const volatile
  • C语言中static和auto用法详解
    目录static的第一种用法:定义为静态变量static的第二种用法:有理说不清,直接代码见真知auto的用法:直接代码见真知总结static的第一种用法:定义为静态变量 何为静态变...
    99+
    2024-04-02
  • c语言中auto的用法
    auto 关键字用于声明 c 语言中的局部变量,具有以下作用:声明局部变量,默认为 int 类型,声明后自动初始化为 0。 auto 关键字在 C 语言中的用法 auto 关键字是 C...
    99+
    2024-05-09
    c语言
  • c语言中auto的作用
    auto 关键字在 c 语言中声明局部自动存储变量,具有以下作用:局部范围:仅在声明变量的函数或块范围内可见。自动存储:存储在函数栈中,函数调用时分配内存,返回时释放。默认初始化:整数类...
    99+
    2024-04-29
    c语言
  • 一文详解C++中的引用与关键字auto
    目录一.引用1.引用的概念2.引用的使用和问题3.引用与指针的比较二.关键字auto一.引用 1.引用的概念 引用就是给一个已经存在的变量取一个别名,与变量共用一段内存空间。注意引用...
    99+
    2023-05-16
    C++ 引用 关键字auto C++引用 C++ 关键字auto
  • C++中的for auto怎么使用
    本篇内容主要讲解“C++中的for auto怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++中的for auto怎么使用”吧!C++中for auto的用法for...
    99+
    2023-07-05
  • C++中auto关键字的使用
    前提引入 1.类型名,在绝大多数编程时,我们都会引入类型来定义一个我们需要的数据。 类型众多,偶尔我们会遇见一串类型名,使用起来无比复杂。存在拼写错误,含义不明确导致出错的问题。 列...
    99+
    2023-05-15
    C++ auto关键字 C++ auto
  • C++超详细讲解auto与nullptr的使用
    目录一. auto关键字1. auto介绍2. 使用规则3. auto不能推导的场景二. 基于范围的for循环(C++11)1. 范围for的语法2. 范围for的使用条件三. 指针...
    99+
    2024-04-02
  • C语言中auto怎么用
    这篇文章主要为大家展示了“C语言中auto怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言中auto怎么用”这篇文章吧。你以为我说的自动变量类型auto吗非也,我们知道C语言中其实也有...
    99+
    2023-06-16
  • 如何使用C++ 11中的auto和decltype
    这篇文章将为大家详细讲解有关如何使用C++ 11中的auto和decltype,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++ 11中引入的auto主要有两种用途:自动类型推断和返回值占...
    99+
    2023-06-17
  • c语言中的auto有什么作用
    在C语言中,auto是一种存储类别,用于声明局部变量。auto关键字用于隐式声明局部变量,默认情况下,所有局部变量都是auto类型的...
    99+
    2023-10-12
    c语言
  • c语言中auto的作用是什么
    在C语言中,auto是一种存储类说明符,用于声明自动变量。auto关键字可以用来显式声明变量,默认情况下所有局部变量都是自动变量,所...
    99+
    2023-10-28
    c语言
  • C++中auto关键字怎么使用
    今天小编给大家分享一下C++中auto关键字怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前提引入类型名,在绝大多数...
    99+
    2023-07-06
  • C语言中static和auto用法是什么
    这期内容当中小编将会给大家带来有关C语言中static和auto用法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。static的第一种用法:定义为静态变量何为静态变量?存储在静态数据区的变量会在程序...
    99+
    2023-06-26
  • C语言关键字auto与register及static专项详解
    目录1.auto2.register3.static1.auto 在解释 auto 之前,先来了解一下什么是局部变量。 在很多印象中,对局部变量的描述是:函数内定义的变量称为局部变量...
    99+
    2024-04-02
  • auto在css中的用法
    auto是css中表示浏览器根据特定元素属性自动计算值的一个特殊值,可以在height、width、margin、padding、flex-grow和flex-shrink属性中使用,优...
    99+
    2024-04-28
    css flex布局 css属性
  • C++中引用、内联函数、auto关键字和范围for循环详解
    目录一、前言二、引用三、内联函数四、auto关键字五、范围for循环六、结语一、前言 大家好久不见,这篇文章带大家学习一下C++中的引用和内联函数 二、引用 引用变量是一个别名,也就...
    99+
    2023-02-10
    c++ auto关键字 c++中的内联函数 c++引用的作用是什么
  • CSS中width和height的默认值auto与%示例分析
    这篇文章主要介绍CSS中width和height的默认值auto与%示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!结论width的%:定义基于包含块(父元素)宽度的百分比宽度,会突破父级的限制width的au...
    99+
    2023-06-08
  • c语言auto和register的区别是什么
    在C语言中,auto和register是两个关键字,用于声明局部变量。1. auto关键字:auto是默认的存储类别关键字,它用于声...
    99+
    2023-10-12
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作