[C con Clase] persistencia

Programante programante en gmail.com
Lun Mar 2 23:05:14 CET 2009


Samuel Porras escribió:
> Buenas noches,
>
> acabo de leer este fragmento:
> "Todas las variables numéricas static se inicializan a cero si no son
> inicializadas de forma explícita pro el programador"
>
> esto quiere decir que si yo declaro:
> static int a y static double b.
>
> y imprimo por pantalla:
> printf("%d y %d", a, b);
>
> imprimirá: 0 y 0? 
Eso parece, pero haciendo printf("%d y %lf", a, b);  :-)

> o por el contrario imprimirá lo que haya en esa zona de la memória en
> ese momento?
*Siempre* imprimirá lo que haya en la zona de memoria que llamamos 'a' o
'b'.
La diferencia es que las variables static ocupan siempre la misma
posición de memoria (las variables normales cambian según el momento en
que se llame a la función y la zona de memoria que usan antes pudo ser
usada por otras). En cambio las variables static tienen una posición
reservada desde el principio, por lo que resulta lógico que el
compilador le asigne un valor por defecto en vez de uno al azar.

> Se comporta de la misma manera en C++?
>
>
> Grácias y un cordial saludo.





Más información sobre la lista de distribución Cconclase