Las variables locales son las que se encuentran dentro de un
ámbito; son «locales» a una función. A menudo se
las llama variables automáticas porque aparecen automáticamente
cuando se entra en un ámbito y desaparecen cuando el ámbito se
acaba. La palabra reservada auto
lo enfatiza, pero las
variables locales son auto
por defecto, de modo que
nunca se necesita realmente declarar algo como auto
.
Una variable registro es un tipo de variable local. La palabra
reservada register
indica al compilador «Haz
que los accesos a esta variable sean lo más rápidos
posible». Aumentar la velocidad de acceso depende de la
implementación, pero, tal como sugiere el nombre, a menudo se
hace situando la variable en un registro del
microprocesador. No hay garantía alguna de que la variable
pueda ser ubicada en un registro y tampoco de que la velocidad de
acceso aumente. Es una ayuda para el compilador.
Hay restricciones a la hora de utilizar variables registro. No se puede consular o calcular la dirección de una variable registro. Una variable registro sólo se puede declarar dentro de un bloque (no se pueden tener variables de registro globales o estáticas). De todos modos, se pueden utilizar como un argumento formal en una función (es decir, en la lista de argumentos).
En general, no se debería intentar influir sobre el
optimizador del compilador, ya que probablemente él hará mejor
el trabajo de lo que lo pueda hacer usted. Por eso, es mejor
evitar el uso de la palabra reservada register
.