为什么我们要去自动类存储类?

时间:2016-02-17 16:15:48

标签: c keyword automatic-storage

在C中,我们为什么选择存储类?我听说自动类型与局部变量相同。在这种情况下,为什么我们选择自动类型?有没有特别的使用自动类型而不是局部变量,没有提到自动类型。 例如,

int a=10; 

auto int a=10; 

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

1 个答案:

答案 0 :(得分:1)

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

  

对象具有确定其生命周期的存储持续时间。有四个存储空间   durations:static,thread,automatic和assigned。

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

  

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

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

  

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

因此,满足上述条件的局部变量默认具有自动存储持续时间。您无需明确指定auto关键字。

OTOH,类型说明符确定(数据或变量的类型)。按照类型

的标准定义
  

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