0

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

int a=10; 

auto int a=10; 

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

4

1 回答 1

1

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

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

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

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

并且,关于联系,(强调我的)

以下标识符没有链接: 声明为对象或函数以外的任何标识符;声明为函数参数的标识符;没有存储类说明符声明的对象的块范围标识符extern

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

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

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

于 2016-02-17T16:20:16.950 回答