[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