Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Variables estaticas

Estas en el tema de Variables estaticas en el foro de C/C++ en Foros del Web. Hola, estoy en medio de una discusión con un colega y tal vez puedan ayudarme. Mi colega me dice que las variables estáticas son solo ...
  #1 (permalink)  
Antiguo 02/05/2013, 07:16
 
Fecha de Ingreso: mayo-2013
Mensajes: 4
Antigüedad: 11 años
Puntos: 0
Variables estaticas

Hola, estoy en medio de una discusión con un colega y tal vez puedan ayudarme.

Mi colega me dice que las variables estáticas son solo las que tienen el modificar static. Yo creo que las variables estáticas también son aquellas declaradas fuera de cualquier función independiente de si tienen el modificador static o no.

Ustedes que opinan?

saludos, gracias.
  #2 (permalink)  
Antiguo 02/05/2013, 07:52
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Variables estaticas

Lo que tu dices son variables globales. Tu amigo tiene razón.

Aunque se puede usar el modificador static en variables globales (con un resultado diferente a las locales).
  #3 (permalink)  
Antiguo 02/05/2013, 08:09
 
Fecha de Ingreso: mayo-2013
Mensajes: 4
Antigüedad: 11 años
Puntos: 0
Respuesta: Variables estaticas

Ok, pero estas variables globales al igual que las estáticas se enlazan a su l-valor en tiempo de compilación. En cambio las locales se enlazan a su l-valor en tiempo de ejecución. o no?

saludos, gracias.
  #4 (permalink)  
Antiguo 02/05/2013, 08:33
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Variables estaticas

El que sean globales o locales solo hace referencia a su ámbito de ejecución, no a como se evaluan. Como ya te han dicho, tu amigo tiene razón.
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 02/05/2013, 08:51
 
Fecha de Ingreso: mayo-2013
Mensajes: 4
Antigüedad: 11 años
Puntos: 0
Respuesta: Variables estaticas

Ok, para concluir. Cuando se hace el enlace o binding de una variable global con su l-valor?
  #6 (permalink)  
Antiguo 02/05/2013, 16:47
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Variables estaticas

No te sigo, te refieres a cuando se aplica el valor en las variables globales? Lo obtienen desde el inicio del programa.
  #7 (permalink)  
Antiguo 02/05/2013, 17:21
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Variables estaticas

YO creo que hay que hacer diferencia:
Variable statica es aquella que se crea una sola vez. Y variable dinámica es aquella que se creo muchas veces y puede estar crea varias veces al mismo tiempo en distintos marcos de activación.

Siguiendo esta definición tanto una variable definida con Static como una variable global es Estatica. En cambio las variables definidas en una función a nivel local son dinámicas.

Ese es mi punto de vista de las variables. Igualmente es obvio que cada uno interpreta y define como cree estas cosas. Lo importante no es el nombre sino saber como se representa internamente en el compilador.

Saludos
  #8 (permalink)  
Antiguo 02/05/2013, 19:27
 
Fecha de Ingreso: noviembre-2011
Mensajes: 50
Antigüedad: 12 años, 5 meses
Puntos: 3
Respuesta: Variables estaticas

Cita:
Iniciado por sam90 Ver Mensaje
YO creo que hay que hacer diferencia:
Variable statica es aquella que se crea una sola vez. Y variable dinámica es aquella que se creo muchas veces y puede estar crea varias veces al mismo tiempo en distintos marcos de activación.

Siguiendo esta definición tanto una variable definida con Static como una variable global es Estatica. En cambio las variables definidas en una función a nivel local son dinámicas.

Ese es mi punto de vista de las variables. Igualmente es obvio que cada uno interpreta y define como cree estas cosas. Lo importante no es el nombre sino saber como se representa internamente en el compilador.

Saludos
Creo que tienes una confusion, no tiene nada que ver que una variable se declare en una funcion con ser dinamica.

Variables Estaticas: Se declaran en cualquier parte del programa (con el comando static) pero su alcance es global y duran hasta el termino del programa. Se almacenan en la memora estatica (Statick memory).

Variables Globales: Se declaran fuera de la funcion main y tienen un alcance global, duran la ejecucion del programa. Se almacenan en la memoria estatica (Statick memory).

Variables DInamicas: Las que se crean con los comandos malloc o new (c y c++ respectivamente). Duran hasta que se las libere con los comandos free o delete, o hasta la duracion del programa. Se almacenan en el Heap del programa.

Las variables que creas en las funciones son solo variables con un alcance local y se almacenan en el Stack o Pila, y su memoria es liberada al termino de la funcion.

Última edición por ElPatoGarrido; 02/05/2013 a las 19:36
  #9 (permalink)  
Antiguo 03/05/2013, 04:21
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Variables estaticas

Cita:
Iniciado por ElPatoGarrido Ver Mensaje
Las variables que creas en las funciones son solo variables con un alcance local y se almacenan en el Stack o Pila, y su memoria es liberada al termino de la funcion.
Se llaman variables automáticas, lo que pasa esque no es imprescindible poner el prefijo auto
  #10 (permalink)  
Antiguo 06/05/2013, 06:55
 
Fecha de Ingreso: mayo-2013
Mensajes: 4
Antigüedad: 11 años
Puntos: 0
Respuesta: Variables estaticas - solucionado

Cita:
Iniciado por ElPatoGarrido Ver Mensaje
Creo que tienes una confusion, no tiene nada que ver que una variable se declare en una funcion con ser dinamica.

Variables Globales: Se declaran fuera de la funcion main y tienen un alcance global, duran la ejecucion del programa. Se almacenan en la memoria estatica (Statick memory).
Gracias Elpatogarrido, a esto me refería. Era medio confuso el concepto.

Etiquetas: variable, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:22.