问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求C++中auto型的详细解释

发布网友 发布时间:2022-04-21 21:51

我来回答

5个回答

热心网友 时间:2023-06-28 01:10

auto是一个C/C++语言存储类型,仅在语句块内部使用,初始化可为任何表达式,其特点是当执行流程进入该语句块的时候初始化可为任何表达式。

auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。

例如:

auto double a=3.7; 

表示a为一个自动存储的临时变量。

扩展资料:

C++语言

C++ 98标准/C++03标准

同C语言的意思完全一样:auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。

C++ 11标准

在C++11标准的语法中,auto被定义为自动推断变量的类型。

热心网友 时间:2023-06-28 01:10

auto是一个C/C++语言存储类型,仅在语句块内部使用,初始化可为任何表达式,其特点是当执行流程进入该语句块的时候初始化可为任何表达式。

在函数内部定义的变量成为局部变量。在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字auto定义局部变量这一作法保持一致。

用来声明自动变量。表明变量(自动)具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。

扩展资料:

C语言中提供了存储说明符auto、register、extern、static说明的四种存储类别。

四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。

具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。

在函数内部定义的变量成为局部变量。在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字auto定义局部变量这一作法保持一致。

参考资料:

百度百科——auto (C/C++语言存储类型)

热心网友 时间:2023-06-28 01:11

auto:用来声明自动变量。它是存储类型标识符,表明变量(自动)具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。
其实大多普通声明方式声明的变量都是auto变量,他们不需要明确指定auto关键字,默认就是auto的了。auto变量在离开作用域是会变程序自动释放,不会发生内存溢出情况(除了包含指针的类)。使用auto变量的优势是不需要考虑去变量是否被释放,比较安全吧。
new:new是用来在堆上申请内存地址的关键字,他产生的变量不会自动释放,除非delete来手动释放,或者程序结束时由操作系统释放,使用new的优势是内存使用比较灵活,理论可以申请任意大小的内存区块(实际与操作系统有关),但这很容易产生问题,一不小心忘记释放对象,特别是在频繁调用的函数内创建的对象忘记释放时,会产生内存溢出,严重时导致程序出错,系统崩溃。new一般都是在类的定义中使用,结合delete可以使包含new出来对象的类也具有自带变量功能,这样就继承了两种方式的优势。
--------------------------------------------------------------
另外,最新的C++标准更新了auto关键字的功能
除了具有原有的含义外,还增加了一种类似其他高级语言的型别推导特性
使用auto来代替变量的类型,
前提是被明确类型的初始化变量初始化的,可以使用auto关键字
比如int i=10; auto a = i; //这样a也是int类型了
这在使用一些模板类的时候,对于减少冗赘的代码也很有用
---------------------------------------------------------------
另外一个题外话:auto的对应类型不是使用new出来的变量,而是static变量
static变量是程序接收的时候才释放对象的,但它不需要手动释放。
static如果在一个函数内申明,这每次进入这个函数时,还是使用第一次声明的变量,并且还保存的上次使用的值(auto变量这时函数结束是即释放了,再次调用这个函数是,有重新定义了一个新的变量)
static变量如果在结构和类中使用,这结构或类定义的一切对象,都将共享唯一static变量。

热心网友 时间:2023-06-28 01:12

auto是一个C/C++语言存储类型,仅在语句块内部使用,初始化可为任何表达式,其特点是当执行流程进入该语句块的时候初始化可为任何表达式。C语言中提供了存储说明符auto、register、extern、static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。在函数内部定义的变量成为局部变量。在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字auto定义局部变量这一作法保持一致。

热心网友 时间:2023-06-28 01:12

我个人认为这个和auto没有关系。auto的意义在于不用指定返回的类型,编译器可以自动识别。它根据你右边的返回结果得出返回的类型。右边是类名(),这种相当于构建了一个临时对象,这是个栈内存,然后临时对象赋值给了myStruct1。 其实你这样写和myStruct myStruct1;基本上是一样的。都是调用完了默认构造函数之后初始化了一个对象。你用auto可能需要创建两次(或者3次),第一次调用默认构造函数初始化为临时对象,第二次调用赋值函数赋值给myStruct1,第三次myStruct1本身的默认构造函数。
对于这种问题,建议给myStruct类增加默认构造函数,赋值构造函数,析构函数等。最后查看打印的这些函数,就知道创建了几次对象了。可以分析的更准确。而且编译器的优化功能可能使得结果五花八门,因此最好禁用优化,看到最朴素的情况。还有类名不要用myStruct这种。这不是一个正当的程序员该做的事情。类名首字母大写,MyStruct要好的多,而对象名可以myStruct这种,才有区分度。 MyStruct这种名字也太俗了,还不如叫A,B,C这样的好。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 关于日本无限汽车的问题!~ 为什么汽车叫汽车? 汽车为什么要叫做汽车了 汽车上都有哪些系统的缩写? C++ :const auto &j=42??求指点 automobile和car有什么区别? C++中auto关键字是做什么? JOINTAUTO J注册过商标吗?还有哪些分类可以注册? autojs教学谁有? 幼儿园家长要求发孩子视频该怎么回复 女情人发个小孩视频给男情看,男情人怎么回复她 我姐给我发了一堆她孩子的视频!也不可爱呀! 我该... 女朋友快手上发了一个小女孩的视频,配文是,有个... 抖音上是禁止发孩子的视频吗 女朋友给我发一个小孩视频 她说她看孩子了很可爱啊... 男生老是发小孩子的照片跟小视频给女生看,啥意思 抖音上为什么不能发宝宝视频 家长在群里老是发自己孩子的相片和视频,怎么说才... 朋友圈发宝宝乖乖吃饭的视频怎么编辑 姐姐家的孩子我想拍个视频发朋友圈怎么写说说? 关于Auto病毒查杀~ 电信宽带怎么连接电视 电信宽带看电视收费吗 电信宽带电视? 何谓十二指肠溃疡? 十二指肠溃疡的主要临床表现是什么? 十二指肠溃疡是什么原因造成的? 怎样炸油条方法和步骤 十二指肠溃疡有哪些症状 十二指肠溃疡怎样治疗? 十二指肠溃疡 十二指肠溃疡需要注意什么 炸油条方法和配料 十二指肠溃疡有什么症状 油炸油条的做法和配方大全 十二指肠溃疡是什么? 夏天炸油条和冬天炸油条和面有啥不一样的吗? 十二指肠溃疡是指的什么? 十二指肠溃疡能治好吗? 十二指肠溃疡都有什么症状?