Bienvenidos sean a este post, la diferencia entre el almacenamiento interno y externo.
Para las clases de almacenamiento fijas el lenguaje C nos provee de varios mecanismos para ubicar la memoria, para ello tenemos las siguientes palabras reservadas:
- auto
- static
- register
- extern
En este caso el primero representa a la clase automatica y el segundo representa al estatico, los cuales seran por el momento en cuales nos centraremos, pero de los cuatro el unico que hemos utilizado es el primero porque es de la forma que estuvimos trabajando, estos debemos usarlo en nuestras variables, por lo tanto nuestras declaracion de variables puede ser de la siguiente manera:
[clase_de_almacenamiento] [const] tipo_dato nombre_variable [=valor_inicial];
En la primera ira cualquiera de las cuatro palabras que mencionamos antes, en caso de omitirla de manera predeterminada se asignara el valor de auto, la siguiente es opcional para establecer si la variable es constante o no, despues el tipo de dato y el nombre de la variable son obligatorios y por ultimo el valor inical es opcional salvo que sea una constante donde si o si deberemos pasar el valor para este.
Cuando mencionamos que nos centrariamos en las dos primeras palabras es debido a que register se mantiene de versiones viejas de C para indicarle al compilador que debe almacenar el valor en uno de los registros del CPU para acceder mas rapido a ese valor, pero con el pasar del tiempo los compiladores han mejorado tanto que al dia de hoy es ignorada excepto para algunos compiladores especificos de C, en cambio extern esta relacionado con el rango de las variables externas declaradas en otros archivos pero de esto hablaremos mucho mas adelante.
Si bien como dijimos no solamente usamos a los tipo automaticos o fijos sino tambien a los internos, porque son los que pasamos como argumento a una funcion o estan dentro de un bloque, estas tambien incluyen a las variables de un bucle, estos equivalen a cuando hablamos sobre las variables locales dado que solo existiran en el bloque donde fueron declaradas, por fuera de este dejarana de existir en memoria, dejando de ser accesible para el resto del codigo, por esta razon las llamabamos locales.
En cambio las externas estan en toda la memoria declarada por fuera de las funciones, incluido el main, lo cual nos permite que estas variables puedan ser accedidas desde cualquier punto del codigo, estas son las que usualmente llamamos varaiables globales por lo anteriormente comentado, obviamente su mejor caracteristica es su facil accesibildiad por parte del codigo pero esta tambien es su gran desventaja porque si acumulamos muchas nuestro espacio en memoria se vera altamente reducido, asi como estas variables son mas lentas que las locales, por lo tanto lo mas saludable es utilizarlas a su minima expresion.
Para ir finalizando volvamos a hablar sobre los ciclos de vida, podemos establecer que el ciclo de vida de una variable va desde su creacion hasta su destruccion, siendo que las variables internas automaticas son creadas al momento de declararse ya sea en el bloque de una funcion, como parametro de una funcion, en un bucle o donde haya sido declarado, y esta terminara en el momento de aquello que lo declaro se haya terminado o salido del mismo, en cambio las automaticas externas son creadas cuando se carga el programa en memoria, existiran mientras el programa este activo y se destruiran cuando hayamos terminado con el programa o salido del main.
En resumen, hoy hemos visot otros tipo de clases de almacenamiento, desde algunos tipos, asi como tambien cuales son las internas y las externes, a que equivalen en lo visto en posts anteriores, y algunas caracteristicas de cada uno de ellas, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
