为啥我们要使用自动类型的存储类? [复制]

Posted

技术标签:

【中文标题】为啥我们要使用自动类型的存储类? [复制]【英文标题】:why are we going for auto-type storage class? [duplicate]为什么我们要使用自动类型的存储类? [复制] 【发布时间】:2016-05-29 11:23:41 【问题描述】:

在 C 语言中,我们为什么选择存储类?听说自动类型和局部变量是一样的。在那种情况下,为什么我们要使用自动类型?使用自动类型而不是未提及为自动的局部变量有什么特别之处。 例如,

int a=10; 

auto int a=10; 

两者都存储在堆栈段中,这些变量的范围在函数内。那么这两者有什么区别?为什么我们选择auto-type?

【问题讨论】:

auto type instead of local variables..请先读一本C书。 auto 不是类型。 自动类型是一种存储类。所以我提到了自动类型说明符 只是为了补全@KerrekSB先生所说的,它是一个存储类说明符。 【参考方案1】:

首先,auto(关键字)不是类型说明符,它是存储类说明符。引用标准,

对象具有决定其生命周期的存储持续时间。有四个存储 持续时间:静态、线程、自动和分配。

引用C11,第 §6.2.4 章,对象的存储持续时间

一个对象,其标识符被声明为没有链接且没有存储类 说明符static 具有自动存储持续时间,[..]

并且,关于链接,(强调我的

以下标识符具有无链接:声明为除此之外的任何标识符 一个对象或一个函数;声明为函数参数的标识符; 块作用域 未使用存储类说明符 extern 声明的对象的标识符。

因此,满足上述条件的局部变量默认具有自动存储期限。您不必显式指定auto关键字。

OTOH,类型说明符确定(数据或变量的)类型。遵循类型的标准定义

存储在对象中或由函数返回的值的含义由 用于访问它的表达式的类型

【讨论】:

在哪里使用了auto关键字? @Arul 你的意思是明确吗?

以上是关于为啥我们要使用自动类型的存储类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如果我们有抽象类,为啥要在 Java 中使用接口? [复制]

为啥保证金:自动;不工作? [复制]

如何自动将文件从多个 Azure VM 复制到 Azure 存储并访问

使用 Objective-C/Swift 单例模型,为啥我们要创建共享实例而不只是使用类方法? [复制]

为啥类中的向量自动变为NULL

java中的String类型的对象为啥可以自动转换成Object类型的?而Object却要强制转换成String类型的