3.6.2 局部变量
局部变量出现在一个作用域内,它们是局限于一个函数的。局部变量经常被称为自动变量(automatic variable),因为它们在进入作用域时自动生成,离开作用域时自动消失。关键字auto可以显式地说明这个问题,但是局部变量默认为auto,所以没有必要声明为auto。
3.6.2.1 寄存器变量
寄存器变量是一种局部变量。关键字register告诉编译器“尽可能快地访问这个变量”。加快访问速度取决于实现,但是,正如名字所暗示的那样,这经常是通过在寄存器中放置变量来做到的。这并不能保证将变量放置在寄存器中,甚至也不能保证提高访问速度。这只是对编译器的一个暗示。
使用register变量是有限制的。不可能得到或计算register变量的地址。register变量只能在一个块中声明(不可能有全局的或静态的register变量)。然而可以在一个函数中(即在参数表中)使用register变量作为一个形式参数。
一般地,不应当推测编译器的优化器,因为它可能比我们做得更好。因此,最好避免使用关键字register。