[ Foro para dudas y novedades ]
Especificadores
Hola
Leyendo un libro de C/C++, en una pagina me encontre estos especificadores, o al menos asi le llaman. Lo lei como 5 veces y no le entendi nada :P, comentaron que no son necesarios ponerlos, pero eso no resuelve mi duda .¿Para que sirven?
Los especificadores son:
auto
register
extern
static
De antemano Gracias ;)
Permiten indicar características adicionales que tú desearías que tuviera una variable:
- "register" es para indicarle al compilador que intente guardar una variable en uno de los registros del procesador, para que su manejo sea más rápido:
register int x;
- "extern" indica que una variable (o una función) se ha declarado fuera de tu programa, habitualmente en otro fuente que vas a enlazar junto con el tuyo.
- "static" permite que el valor de una variable local (la que está definida dentro de una función) se conserve entre llamadas a la función, en vez de perderse cuando se sale.
- "auto" casi que... no quiere decir nada ;-) Se usa para variables locales con su vida normal, lo opuesto a "static". Como es lo normal, no se suele escribir.
Oye muchas gracias ;)
Aunque me podrias poner un ejemplo para ver como trabajan :)
Parece ser que te entiendo mejor a ti que al autor del libro :D
Saludos
Es difícil poner un ejemplo corto.
Aun así:
- "auto" no necesita ejemplo, porque es lo habitual ;-)
- "static" es difícil de poner un ejemplo, porque tienes que pensar una función a la que se llame varias veces dentro de un programa, y que tenga una variable local cuyo valor se deba conservar entre distintas llamadas a la función. Ahora mismo, a mí no se me ocurre ningún ejemplo. En cualquier caso, es algo que típicamente se suele resolver usando una variable global, pero que C permite hacer de forma más elegante, con una variable que realmente es local, pero cuyo valor no se pierde cada vez que sales de la función.
- "register" se usa para variables sencillas en operaciones repetitivas en las que quieras optimizar la velocidad al máximo (aunque no tengas garantías reales de que tu variables se vaya a poder guardar en un registro del procesador, en lugar de en la memoria principal).
- "extern" tampoco es fácil en un ejemplo corto. Imagina que tienes una variable global "i" en tu programa, y que tu programa es tan grande que está repartido en varios ficheros. Pues bien, en uno de los ficheros declararías realmente la variable con algo como "int i = 0;" y en el resto de los ficheros dirías que "i" existe pero que está declarada en otro sitio, poniendo "extern int i;".
Espero que, a pesar de no se ejemplos reales ;-) te aclare un poco más el uso y te ayude a ti mismo a inventar o buscar algún ejemplo.
(No se puede continuar esta discusión
porque tiene más de dos meses de antigüedad.
Si tienes dudas parecidas, abre un nuevo hilo.)