Autor Tema: cuando se usa una variable tipo static  (Leído 6123 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado tithanae

  • PIC16
  • ***
  • Mensajes: 109
cuando se usa una variable tipo static
« en: 20 de Noviembre de 2009, 13:28:12 »
bueno pues eso el leido el manual de ccs y no he entendido del todo la funcion de una variable static, y/o cuando se usa o debe declararse una variable tipo static   tal ves con un ejemplo de algun colega y una explicacion en leguaje criollo despeje mis dudas. como siempre de antemano gracias.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: cuando se usa una variable tipo static
« Respuesta #1 en: 20 de Noviembre de 2009, 13:31:55 »
Se usan para variables locales de una función, pero al hacer llamadas sucesivas el valor se mantiene. En una función cuando se declara una variable, el lugar de memoria es compartido con variables de otra función, en cambio al declararla como static, se reserva el lugar de memoria.




Saludos!
« Última modificación: 20 de Noviembre de 2009, 13:34:55 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: cuando se usa una variable tipo static
« Respuesta #2 en: 20 de Noviembre de 2009, 13:32:38 »
Una variable se define como static cuando necesitas que sea visible sólo dentro del ámbito de una determinada función, y además necesitas que el valor de la variable sea recordado cada vez que entres en la función.
A nivel práctico, la única diferencia entre una variable static y una global es que sólo se verá en la función donde esté declarada.

Desconectado tithanae

  • PIC16
  • ***
  • Mensajes: 109
Re: cuando se usa una variable tipo static
« Respuesta #3 en: 20 de Noviembre de 2009, 13:36:54 »
Entendido muy claramente.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: cuando se usa una variable tipo static
« Respuesta #4 en: 20 de Noviembre de 2009, 13:58:56 »
Una variable se define como static cuando necesitas que sea visible sólo dentro del ámbito de una determinada función, y además necesitas que el valor de la variable sea recordado cada vez que entres en la función.
A nivel práctico, la única diferencia entre una variable static y una global es que sólo se verá en la función donde esté declarada.

Oh qué bien, yo pensaba que Static solo existía en programación orientada a objetos y que se usaba para poder llamar una función de una clase sin que exista un objeto instanciado de la misma clase sobre el que se pueda aplicar tal función.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: cuando se usa una variable tipo static
« Respuesta #5 en: 20 de Noviembre de 2009, 17:54:16 »
Hola, otro uso de la palabra static es para las variables globales y que tengan solo visibilidad dentro del módulo donde se las declara.
Ejemplo:

Código: C
  1. static int Pepe;
  2. ...

De esta manera la variable global Pepe solo puede ser utilizada dentro del módulo donde esta declara, cualquier uso en otro módulo el linker generará un error. En el paradigma de objetos esto es llamado encapsulación

Saludos !

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: cuando se usa una variable tipo static
« Respuesta #6 en: 20 de Noviembre de 2009, 17:59:11 »
Muchacho ya que estamos hablando de las variables:

Siempre he tenido esta duda, yo estoy creando una libreria  y quiero que una variable de mi libreria por ejemplo "HOLA.c" se vea como una variable global, es decir que se vea tanto en el programa principal como en las otras librerias que pueda crear.


Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: cuando se usa una variable tipo static
« Respuesta #7 en: 20 de Noviembre de 2009, 18:07:22 »
Hola, si la variable la tenes declara asi en algunos de tus modulos de esta manera

Código: C
  1. int Pepe;

Para usarla en algún módulo fuera de la implementaciíon, solo tenes que declarla asi:

Código: C
  1. extern int Pepe;

Saludos !

Desconectado tithanae

  • PIC16
  • ***
  • Mensajes: 109
Re: cuando se usa una variable tipo static
« Respuesta #8 en: 21 de Noviembre de 2009, 11:07:24 »
Citar
Oh qué bien, yo pensaba que Static solo existía en programación orientada a objetos y que se usaba para poder llamar una función de una clase sin que exista un objeto instanciado de la misma clase sobre el que se pueda aplicar tal función.
Me perdiste leo y releo y nada tal ves un ejemplo de tu aporte me ilumine.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: cuando se usa una variable tipo static
« Respuesta #9 en: 21 de Noviembre de 2009, 11:17:49 »
Hum... OK.

Tengo una clase llamada San_HID_Library:

Código: [Seleccionar]
   public class San_HID_library
    {
         public static SafeFileHandle ConectarWiimote()
        {
            //Datos únicos del Wiimote
            const Int16 VID = 0x057e;
            const Int16 PID = 0x0306;

            //Lista para guardar todo Wiimote que se haya encontrado
            List<String> rutasHID = new List<String>();

            //Investiga GUID de los HID
            System.Guid myGuid = new System.Guid();
            HidD_GetHidGuid(ref myGuid);
            ...
            return var;
        }
    }

Entonces se ve que la clase tiene un método llamado ConectarWiimote(). Ese método es static.

Al ser static no necesito instanciar un objeto de la clase San_HID_Library para poder aplicar tal método sobre él.

Veamos código erróneo:

Código: [Seleccionar]
San_HID_Library objeto = new San_HID_Library(); //Instancia un objeto de la clase

SafeFileHandle wii;
wii = objeto.ConectarWiimote(); //No es correcto ya que static no requiere actuar sobre objetos de la clase

Veamos el código correcto:

Código: [Seleccionar]
SafeFileHandle wii;
wii = San_HID_Library.ConectarWiimote(); //Actúa sin tener objetos instanciados de la clase

Al menos eso es lo que he ido entendiendo de la POO por simple experiencia, no porque la haya aprendido en la escuela formalmente  :oops:

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: cuando se usa una variable tipo static
« Respuesta #10 en: 21 de Noviembre de 2009, 13:43:31 »
yo he estado estudiando un poco la POO (con JAVA) y por lo que he leído, el uso de métodos y variables estáticas es para usarlo como variables globales en un proyecto, las otras definiciones es como la menciona Santiago, para usarlas sin tener que crear un objeto (métodos huérfanos).

Supongo que habrán creado esta forma de usar métodos, para mantener una cierta compatibilidad hacia atrás (y programar sin las reglas de la POO)

ahora, después de leer todos esos conceptos, me hace mirar con otra perspectiva la forma en que ccs usa el static, forma un poco rara por cierto, una variable global que no es visible globalmente  :shock:

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: cuando se usa una variable tipo static
« Respuesta #11 en: 21 de Noviembre de 2009, 13:59:53 »
Métodos huérfanos... oohhhh. Gracias Pali.

Esta gente que le pone nombre a la POO... son ingeniosos, son como las instancias anónimas  :D

Desconectado tithanae

  • PIC16
  • ***
  • Mensajes: 109
Re: cuando se usa una variable tipo static
« Respuesta #12 en: 21 de Noviembre de 2009, 15:22:08 »
Citar
ahora, después de leer todos esos conceptos, me hace mirar con otra perspectiva la forma en que ccs usa el static, forma un poco rara por cierto, una variable global que no es visible globalmente
Eso es lo que yo habia entendido cuando lei el manual y me pregunte tonses para que se usa? entonses los amigos mas arriba me dieron unos ejemplos con lo que lo entendi mejor.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: cuando se usa una variable tipo static
« Respuesta #13 en: 22 de Noviembre de 2009, 15:14:58 »
Métodos huérfanos... oohhhh. Gracias Pali.

Esta gente que le pone nombre a la POO... son ingeniosos, son como las instancias anónimas  :D

jeje de hecho el nombre que le dan en algunos libros, son métodos de clases.





La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:cuando se usa una variable tipo static
« Respuesta #14 en: 07 de Junio de 2023, 07:58:08 »
una consulta

quiero declarar una variable estatica dentro de una funcion e inicializarla con un valor

static int valor=15;

sera posible que solo se inicialize la primera vez con el valor de 15  o es que en cada llamada a la funcion la variable se inicializa??

gracias


 

anything