Autor Tema: Variables "static"  (Leído 2027 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado El_Coach

  • PIC12
  • **
  • Mensajes: 79
Variables "static"
« en: 16 de Diciembre de 2005, 05:50:00 »
Hola Vacilando

Alguna vez he tenido problemas con variables que cambiaban de valor misteriosamente... y hace poco me dijeron que definiendo las variables como static, el ccs reservaba un espacio en la ram exclusivamente para esa variable.
Sin embargo en la ayuda del ccs dice que la directiva static se utiliza en las variables globales, inicializando su valor a 0, sin mencionar nada más.

¿ Alguien sabe que hace realmente la directiva static ?
¿ Se puede utilizar tanto en variables locales como globales ?


Un saludo Navidad
"Hazlo o no lo hagas, pero nunca lo intentes"

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Variables "static"
« Respuesta #1 en: 16 de Diciembre de 2005, 07:15:00 »
La directiva static se usa para definir variables globales, de esta forma independientemente de la funcion en la que se encuentre,  la variable, tendra el mismo valor y sera la misma variable. Para ponerte un ejemplo, si tienes una variable int llamada a en una funcion y otra con el mismo nombre en otra funcion, solo son para esta funcion y no podras usar esta variable en otra ya que es una variable local. Si usas una variable static int, es la misma variable en todo el programa y puedes cambiarle el valor des de cualquier parte del programa.  

Una variable static no puede ser local.

Salu2

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Variables "static"
« Respuesta #2 en: 16 de Diciembre de 2005, 07:16:00 »
La funcion static se puede declarar tanto para globales como para locales, el modo de funcionamiento local de una variable static es similar a la declaracion d una variable global excepto en su uso, la variable global se puede usar en cualquier funcion del programa, la variable local solo la puede usar en la funcion donde este declarada, si dicha variable local la declaramos como static, al termino d ela funcion la variable local no se destruye ni se crea al comienzo de la funcion, sino que por ser static conserva su valor al termino y al comienzo de la funcion.

Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado omibaya

  • PIC12
  • **
  • Mensajes: 57
RE: Variables "static"
« Respuesta #3 en: 16 de Diciembre de 2005, 09:18:00 »
Entonces amigos, cual es la diferencia entre una variable global y una estatica? o son lo mismo, porque yo programo con variables globales y no cambian de valor, bueno hasta ahora no me han dado problemas...

Desconectado omibaya

  • PIC12
  • **
  • Mensajes: 57
RE: Variables "static"
« Respuesta #4 en: 16 de Diciembre de 2005, 09:22:00 »
Entonces amigos, cual es la diferencia entre una variable global y una estatica? o son lo mismo, porque yo programo con variables globales y no cambian de valor, bueno hasta ahora no me han dado problemas...

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Variables "static"
« Respuesta #5 en: 16 de Diciembre de 2005, 10:07:00 »
La diferencia entre la global y la local estatica es que la global se puede usar en cualquier funcion del programa mientras que la local estatica solo se puede usar en la funcion declaradaGiño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado El_Coach

  • PIC12
  • **
  • Mensajes: 79
RE: Variables "static"
« Respuesta #6 en: 16 de Diciembre de 2005, 19:31:00 »
Gracias a tod@s por las respuestas Sonrisa

Pero todavía me queda una dudilla, la directiva static conserva el valor de una variable local al finalizar una función, y al volver a entrar en dicha función, la variable declarada como static mantiene el valor con que se quedó en el último acceso a la función.
Pero en el caso de una variable global no tiene mucho sentido que sea esa su utilidad, ya que una variable global, se supone que conserva el último valor durante  la ejecución de todas las funciones sin necesidad de declararla como static.
¿Que sentido tiene declarar una variable global como static?

Un saludo Giño
"Hazlo o no lo hagas, pero nunca lo intentes"

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Variables "static"
« Respuesta #7 en: 17 de Diciembre de 2005, 09:09:00 »
La variable global es static por si sola ya que no se crea ni se destruye al inicio o finalizado de una funcionGiño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte


 

anything