[C con Clase] persistencia

Samuel Porras samuelporras en gmail.com
Lun Mar 2 21:05:52 CET 2009


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? o por el contrario imprimirá lo que haya en esa zona 
de la memória en ese momento?

Se comporta de la misma manera en C++?


Grácias y un cordial saludo.

Samuel Porras escribió:
> Muchas grácias Steven, me has aclarado la duda.
> Un cordial saludo ^^.
>
> Steven Davidson escribió:
>> Hola Samuel,
>>
>> Samuel Porras wrote:
>>> Buenos días,
>>> escribo a la lista para resolver un par de dudas sobre la
>>> persistencia en lenguaje C.
>>>
>>> Estoy estudiando la persistencia automática y la persistencia
>>> estática, la persistencia automática tiene auto y register que se
>>> comportan de un modo determinado y la estatica permanece a lo largo
>>> de todo el programa, tanto en una como en otra, dicen
>>> identificadores, en las de persistencia automática dicen que solo se
>>> puede usar con variables automáticas y en la persistencia estática en
>>> la declaración de variables y de funciones.
>>>
>>> La duda es:
>>> - static y extern se puede utilizar en funciones y variables, auto y 
>>> register solo en variables, no? o en las dos solo se utiliza en 
>>> variables, y de ser así
>>
>> La primera parte de tu afirmación es correcta:
>> - Las variables pueden tener: auto, register, extern, o static.
>> - Las funciones pueden tener: extern, o static.
>>
>>> ¿Qué utilidad tendría declarar static y extern una función?
>>>
>>
>> Indicar que una función es estática significa que su existencia o 
>> "vida" sólo pertenece al código fuente que la definió. Es decir, tal 
>> función tiene un ámbito de fichero. Por ejemplo,
>>
>> // fuente1.c
>> static int func( int );
>> ...
>>
>> // fuente2.c
>> static void func( float[], int );
>> ...
>>
>> Las dos funciones 'func()' no guardan relación alguna y existen 
>> exclusivamente en su fichero fuente correspondiente.
>>
>> Indicar 'extern' para una función no tiene mucho sentido, ya que por 
>> defecto su enlazado es externo y por tanto visible y compartido por 
>> otros ficheros fuentes.
>>
>>
>> En C++, existen otros usos y en el caso de variables y funciones 
>> miembros, 'static' tiene otro uso.
>>
>>
>> Espero haber aclarado la duda.
>>
>> Steven
>>
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net 
>>
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>




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