Sobre variables

26/04/2009 - 21:49 por Esteban | Informe spam
Saludandolos muy afectuosamente a todos

Duda de principiante.

Si tengo un ciclo:

for ()
{
int entero=0;
.

}

En cada iteracion del ciclo for se esta creando una NUEVA variable 'entero'
?
O se reutiliza la misma?

No es mejor asi poner la declaracion antes del for ?
 

Leer las respuestas

#1 Alberto Poblacion
27/04/2009 - 07:49 | Informe spam
"Esteban" <ee> wrote in message
news:
Saludandolos muy afectuosamente a todos

Duda de principiante.

Si tengo un ciclo:

for ()
{
int entero=0;
.

}

En cada iteracion del ciclo for se esta creando una NUEVA variable
'entero' ?
O se reutiliza la misma?



Depende de como interpretes "nueva" o "reutilizar". La variable va a ir
a parar al Stack, y lo que hace internamente para reservarle sitio es
"mover" el puntero del Stack para hacer un hueco para la variable. Como el
Stack está en el mismo sitio durante todas las iteracíones del bucle, el
"hueco" para la variable va a ir siempre a parar a la misma posición de
memoria. Desde este punto de vista, podrías considerar que se está
reutilizando la variable. En cualquier caso, es irrelevante, puesto que
siempre la inicializas a cero, con lo que se pierde cualquier valor que
tuviera desde la anterior iteración, y en ese sentido se comporta como si
siempre fuera "nueva".

No es mejor asi poner la declaracion antes del for ?



Desde el punto de vista de la mantenibilidad y fiabilidad del programa,
es conveniente declarar cada variable de forma que su alcance y visibilidad
sea los mínimos posibles. En este sentido, es preferible declarar la
variable dentro del bucle en lugar de fuera (suponiendo, claro está, que su
valor no se necesite fuera, y que no tenga que persistir entre iteraciones
del bucle). Desde el punto de vista del rendimiento te va a dar igual.
Aunque la declarases fuera del bucle, iría igualmente a parar al Stack, y
serían igual de costosos los accesos a la variable.

Preguntas similares