100%(1)100% au considerat acest document util (1 vot)
559 vizualizări4 pagini
El documento describe las clases de almacenamiento en C, incluyendo auto, register, extern y static. Cada variable tiene una clase de almacenamiento que determina si es global o local. Las variables locales (auto) se crean y destruyen cada vez que se entra y sale de su bloque, mientras que las variables estáticas (static) mantienen su valor entre llamadas sucesivas a una función.
El documento describe las clases de almacenamiento en C, incluyendo auto, register, extern y static. Cada variable tiene una clase de almacenamiento que determina si es global o local. Las variables locales (auto) se crean y destruyen cada vez que se entra y sale de su bloque, mientras que las variables estáticas (static) mantienen su valor entre llamadas sucesivas a una función.
El documento describe las clases de almacenamiento en C, incluyendo auto, register, extern y static. Cada variable tiene una clase de almacenamiento que determina si es global o local. Las variables locales (auto) se crean y destruyen cada vez que se entra y sale de su bloque, mientras que las variables estáticas (static) mantienen su valor entre llamadas sucesivas a una función.
La "clase de almacenamiento" de una variable determina si el elemento tiene una
duracin "global" o "local". C llama a estas dos duraciones "static" y "automatic". Un elemento con una duracin global existe y tiene un valor a lo largo de la ejecucin del programa. Todas las funciones tienen duraciones globales. A las variables automticas, o a las variables con duraciones locales, se les asigna un nuevo almacenamiento cada vez que el control de ejecucin pasa al bloque en que estn definidas. Cuando la ejecucin realiza una devolucin, las variables dejan de tener valores significativos. C proporciona los especificadores de clase de almacenamiento siguientes:
auto register extern static
Recordemos que el almacenamiento puede realizarse en cuatro sitios distintos: el segmento de datos, el registro, el montn o la pila. Recordemos tambin que puede establecerse de tres formas: De forma explcita, mediante la sintaxis de la declaracin (utilizando alguno de los especificadores anteriores). De forma implcita, por la situacin de la declaracin en el cdigo. Por mezcla de ambas.
auto La palabra clave auto sirve para definir las variables como locales. Estas variables solo son conocidas en el bloque de cdigo en que se han definido (ni siquiera en el resto de la funcin a la que pertenece el bloque en cuestin). Puesto que este es el valor por defecto, la palabra reservada auto es opcional y muy raramente se usa. Por esta razn a las variables locales se las suele denominar tambin como automticas. Pueden ser definidas en cualquier parte, pero por razones de legibilidad, es costumbre declararlas al principio del bloque. Las variables locales se guardan en la pila, solo se crean cuando son necesarias (se entra en el bloque); son tambin dinmicas, por lo que se pierden sus valores al salir del bloque; si no se desea que esto ocurra hay que recurrir a declararlas estticas. Esto es muy de tener en cuenta en las llamadas a funciones. Sintaxis: auto <nombre_variable>; register La palabra clave register es un especificador de tipo de almacenamiento; se utiliza para indicar al compilador que ciertas variables (normalmente del tipo int y char) deben ser almacenadas en los registros del procesador en lugar de la pila. Son las denominadas variables de registro. La razn de este "capricho" hay que buscarla en la velocidad. Ocurre que los registros, aunque de poca capacidad y en nmero limitado, corresponden a zonas de almacenamiento de los procesadores cuyo acceso es excepcionalmente rpido. Este especificador de almacenamiento solo puede aplicarse a variables automticas y a parmetros de funciones (por consiguiente no pueden ser globales o estticas). De hecho, cuando el especificador register se aplica a la declaracin de variables (por ejemplo, int, char, float), tambin implica duracin automtica. El tipo y nmero de variables de registro que pueden usarse es dependiente de la implementacin. Normalmente se utiliza para aumentar la velocidad de ejecucin en determinadas zonas de cdigo (en controles de bucle por ejemplo). El compilador puede ignorarlas completamente o ignorar las que sobrepasen el mximo permitido.
Sintaxis: register <nombre_variable>;
extern Permite que ciertas variables puedan ser globales a varias unidades de compilacin. Para esto, las variables se definen en el espacio global de uno de los ficheros, generalmente main y despus se declaran como externas al comienzo de los dems mdulos (generalmente dentro de ficheros de cabecera). Sintaxis: extern <nombre_variable>; static La caracterstica de las variables automticas de perder su valor al salir del bloque en que han sido definidas, es un serio inconveniente en algunas ocasiones. Para resolver el problema se inventaron las variables estticas, un tipo especial de variable que no fuese destruida cuando la ejecucin saliese de su mbito y que conservase su valor. Este nuevo tipo se declara mediante el especificador de tipo de almacenamiento static, con lo que se previene que una variable pierda su valor cuando se sale del bloque en que se ha definido. Por ejemplo, entre llamadas sucesivas a una funcin. Sin embargo, como veremos a continuacin, static puede aplicarse tanto a variables como a funciones e incluso a miembros de clases. Sintaxis: Se puede declarar como variable local Ejem: static <nombre_variable>; int func (int n, int b = 0) { static int suma = 0; if (!n ) return suma; return (suma += b); } Se puede declarar como variable global Ejem: static int x = 10; static void func () { /* .... */ }
bibliografia navegador google http://msdn.microsoft.com/es-es/library/w9hwbe3d.aspx http://www.mailxmail.com/curso-informatica-funciones-c/funciones-c-ambitos- clases-almacenamiento-variables-locales