c中"auto"关键字的概念

Ren*_*h G 13 c keyword

能否请你在C程序中给出关键字"auto"的确切概念.

当我读完一本书"Deep C secrets"时,得到了以下引用.

auto关键字显然毫无用处.它只对在符号表中创建条目的编译器 - 写入器有意义 - 它表示此存储在进入块时自动分配(与全局静态分配或堆上的动态分配相反).Auto与其他程序员无关,因为默认情况下你会得到它.

Lau*_*ves 19

auto不是数据类型.它是一个存储类说明符,就像static.它基本上与static在局部变量上使用时相反,并指示变量的生命周期等于其范围(例如:当它超出范围时,它会自动销毁).

您永远不需要指定auto允许使用它的唯一地方,它也是默认值.

  • @jcsalomon§6.1.2.4中的C90规范说明了自动存储持续时间:"保证存储在这个对象的每个正常条目的新实例上保留存储与它相关联的块...当块的执行以任何方式结束时,不再保证保留对象." 我没有C99规范的副本,但似乎不太可能改变它. (2认同)

Joh*_*itb 5

它可能在C89中有用,你有一个隐式的int规则.

void f() {
  a = 0; // syntax error
  auto b = 0; // valid: parsed as declaration of b as an int
}
Run Code Online (Sandbox Code Playgroud)

但是,你可以直接写int而不是auto.C99不再具有隐式int规则.所以我认为auto不再有任何真正的目的了.它只是"默认的"存储说明符.