Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

static tip varijable
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
shaolin_monk
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 10. 2004. (22:37:34)
Postovi: (2)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 14:46 ned, 29. 5. 2005    Naslov: static tip varijable Citirajte i odgovorite

koja je razlika između
float x
i
static float x
koja je razlika između
float x
i
static float x


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 18:32 ned, 29. 5. 2005    Naslov: Re: static tip varijable Citirajte i odgovorite

[quote="shaolin_monk"]koja je razlika između
float x
i
static float x[/quote]

[code:1]void f1(int x) {
static int n = 0;
if (x) n = x;
printf("%d, ", n);
}
void f2(int x) {
int n = 0;
if (x) n = x;
printf("%d, ", n);
}
int main() {
f1(3); f1(0);
f2(3); f2(0);
}[/code:1]

Ako ovo compiliras, ispis ce biti:

[code:1]3, 3, 3, 0, [/code:1]

To je zato jer se staticna varijabla ponasa dijelomicno kao globalna, tj. izlaskom iz funkcije ne gubi vrijednost, a inicijalizacija (ono [tt]int n = 0;[/tt]) se poziva samo pri prvom pozivu funkcije. :) Kad varijabla nije staticna, onda se vrijednost gubi prilikom izlaska iz funkcije, a inicijalizacija (ako je ima) se vrsi prilikom svakog poziva funkcije. 8)

Negdje sam u vjezbama vidio static varijable u glavnom programu. :o E, tu ne znam cemu to sluzi... :oops:
shaolin_monk (napisa):
koja je razlika između
float x
i
static float x


Kod:
void f1(int x) {
  static int n = 0;
  if (x) n = x;
  printf("%d, ", n);
}
void f2(int x) {
  int n = 0;
  if (x) n = x;
  printf("%d, ", n);
}
int main() {
  f1(3); f1(0);
  f2(3); f2(0);
}


Ako ovo compiliras, ispis ce biti:

Kod:
3, 3, 3, 0,


To je zato jer se staticna varijabla ponasa dijelomicno kao globalna, tj. izlaskom iz funkcije ne gubi vrijednost, a inicijalizacija (ono int n = 0;) se poziva samo pri prvom pozivu funkcije. Smile Kad varijabla nije staticna, onda se vrijednost gubi prilikom izlaska iz funkcije, a inicijalizacija (ako je ima) se vrsi prilikom svakog poziva funkcije. Cool

Negdje sam u vjezbama vidio static varijable u glavnom programu. Surprised E, tu ne znam cemu to sluzi... Embarassed



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Zvone
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 07. 2003. (13:09:44)
Postovi: (9D)16
Sarma = la pohva - posuda
67 = 74 - 7

PostPostano: 22:05 ned, 29. 5. 2005    Naslov: Citirajte i odgovorite

static globalne varijable imaju "internal linkage", tj. vidljive su samo unutar datoteke unutar koje su deklarirane. To ima smisla ako nam se program sastoji od vise file-ova. Na primjer, ovaj program

[code:1]// ----- aa.c -----
#include <stdio.h>
#include "bb.h"

int aaa;

int main ( void )
{
aaa=3;

f();

printf ("%d", aaa);

return 0;
}

// ----- bb.h -----
void f();

// ----- bb.c -----
#include "bb.h"

int aaa;

void f ()
{
aaa=5;
}
[/code:1]

ispisuje 5 jer aa.c i bb.c imaju "zajednicku" varijablu aaa.
Ako promjenimo bb.c ovako:
[code:1]#include "bb.h"

static int aaa;

void f ()
{
aaa=5;
}
[/code:1]
onda ce ispis programa biti 3 jer aa.c i bb.c imaju razlicite varijable aaa.

Vjerojatno sam mogao i neki laksi primjer smislit :)

U vjezbama iz C-a se ovo nalazi mislim kod onog kalkulatora sa stogom -- ne zelimo da netko tko koristi stack.h/stack.c "slucajno" deklarira u svojoj datoteci globalnu varijablu sa istim imenom jer bi moglo doci do nepredvidjenih efekata...
static globalne varijable imaju "internal linkage", tj. vidljive su samo unutar datoteke unutar koje su deklarirane. To ima smisla ako nam se program sastoji od vise file-ova. Na primjer, ovaj program

Kod:
// ----- aa.c -----
#include <stdio.h>
#include "bb.h"

int aaa;

int main ( void )
{
   aaa=3;

   f();

   printf ("%d", aaa);

   return 0;
}

// ----- bb.h -----
void f();

// ----- bb.c -----
#include "bb.h"

int aaa;

void f ()
{
   aaa=5;
}


ispisuje 5 jer aa.c i bb.c imaju "zajednicku" varijablu aaa.
Ako promjenimo bb.c ovako:
Kod:
#include "bb.h"

static int aaa;

void f ()
{
   aaa=5;
}

onda ce ispis programa biti 3 jer aa.c i bb.c imaju razlicite varijable aaa.

Vjerojatno sam mogao i neki laksi primjer smislit Smile

U vjezbama iz C-a se ovo nalazi mislim kod onog kalkulatora sa stogom – ne zelimo da netko tko koristi stack.h/stack.c "slucajno" deklarira u svojoj datoteci globalnu varijablu sa istim imenom jer bi moglo doci do nepredvidjenih efekata...


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 23:53 ned, 29. 5. 2005    Naslov: Citirajte i odgovorite

To kuzim. 8) Zapravo mi nije jasno cemu [tt]static[/tt] u [tt]70__slozene_strukture.c[/tt]:

[code:1]int main()
{
static struct ABC ttt;
static struct ABC sss;

/* inicijalizacija polja struktura XYZ */
static struct XYZ q[] = {
...[/code:1]

:-k

Da postoje istoimene globalne varijable, shvatio bih, ali ovako sam zbunjen. :neznam:
To kuzim. Cool Zapravo mi nije jasno cemu static u 70__slozene_strukture.c:

Kod:
int main()
{
    static struct ABC ttt;
    static struct ABC sss;
   
    /* inicijalizacija polja struktura XYZ */
    static struct XYZ q[] = {
...


Think

Da postoje istoimene globalne varijable, shvatio bih, ali ovako sam zbunjen. Ja to stvarno ne znam



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
DarkOne™24/7®
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2004. (05:46:52)
Postovi: (A7)16
Sarma = la pohva - posuda
-2 = 5 - 7
Lokacija: zg

PostPostano: 10:36 pon, 30. 5. 2005    Naslov: Citirajte i odgovorite

[quote="vsego"]To kuzim. 8) Zapravo mi nije jasno cemu [tt]static[/tt] u [tt]70__slozene_strukture.c[/tt]:[/quote]


vjerojatno da se pokaze da postoji tip kao takav...... s druge strane moglo bi se kad bi se htjelo svasta stavljat u pitanje.. :))
vsego (napisa):
To kuzim. 8) Zapravo mi nije jasno cemu static u 70__slozene_strukture.c:



vjerojatno da se pokaze da postoji tip kao takav...... s druge strane moglo bi se kad bi se htjelo svasta stavljat u pitanje.. :))



_________________
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail AIM YIM MSNM
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 16:03 pon, 30. 5. 2005    Naslov: Citirajte i odgovorite

Svaka varijabala ima svoj [i]scope[/i] i [i]lifetime[/i].

Scope je najbolje prevesti kao doseg, a odnosi se na podrucje u kojem je varijabla 'vidljiva'. U C-u je scope varijable upravo blok u kojem je ona definirana.

Lifetime se moze prevesti kao vrijeme zivota i oznacava vrijeme tokom izvodjenja programa koje pocinje trenutkom kada se za tu varijablu zauzme mjesto u memoriji, a zavrsava trenutkom kada se ta memorija oslobodi.

Za [b]automatske[/b] varijable pravilo je slijedece:
ANSI C - lifetime varijable pocinje ulaskom u blok u kojem je definirana, a zavrsava izlaskom u njega.
C99 - lifetime varijable pocinje kada se izvrsi statement kojim se definira varijabla, a zavrsava izlaskom iz bloka u kojem je definirana.

Lifetime [b]statickih[/b] varijabli pocinje pokretanjem programa i zavrsava s zavrsetkom izvrsavanja programa.
Svaka varijabala ima svoj scope i lifetime.

Scope je najbolje prevesti kao doseg, a odnosi se na podrucje u kojem je varijabla 'vidljiva'. U C-u je scope varijable upravo blok u kojem je ona definirana.

Lifetime se moze prevesti kao vrijeme zivota i oznacava vrijeme tokom izvodjenja programa koje pocinje trenutkom kada se za tu varijablu zauzme mjesto u memoriji, a zavrsava trenutkom kada se ta memorija oslobodi.

Za automatske varijable pravilo je slijedece:
ANSI C - lifetime varijable pocinje ulaskom u blok u kojem je definirana, a zavrsava izlaskom u njega.
C99 - lifetime varijable pocinje kada se izvrsi statement kojim se definira varijabla, a zavrsava izlaskom iz bloka u kojem je definirana.

Lifetime statickih varijabli pocinje pokretanjem programa i zavrsava s zavrsetkom izvrsavanja programa.



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
Zvone
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 07. 2003. (13:09:44)
Postovi: (9D)16
Sarma = la pohva - posuda
67 = 74 - 7

PostPostano: 18:02 pon, 30. 5. 2005    Naslov: Citirajte i odgovorite

[quote="vsego"]cemu [tt]static[/tt] u [tt]70__slozene_strukture.c[/tt][/quote]

Mislim da sluzi iskljucivo ovom: gle, pa mozemo i "struct varijable" deklarirati kao static...jupi :)
I to bi nas trebalo usreciti dovoljno da uopce ne postavimo pitanje smislenosti takve deklaracije u kontekstu tog programa :)
vsego (napisa):
cemu static u 70__slozene_strukture.c


Mislim da sluzi iskljucivo ovom: gle, pa mozemo i "struct varijable" deklarirati kao static...jupi Smile
I to bi nas trebalo usreciti dovoljno da uopce ne postavimo pitanje smislenosti takve deklaracije u kontekstu tog programa Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan