Capitolul 4.6. Variabile statice

Vezi subiectul anterior Vezi subiectul urmator In jos

Capitolul 4.6. Variabile statice

Mesaj  zooky la data de Mier Mar 18, 2009 12:20 pm

Variabilele statice sint a treia clasa de variabile, pe linga cele externe si cele automate, pe care le-am intilnit deja. Variabilele de tip " static" pot fi atit interne cit si externe. Variabilele statice sint locale unei functii particulare la fel ca cele automate dar, spre deosebire de acestea, ele ramin in existenta (exista) tot timpul si nu apar si dispar de fiecare data cind functia este activa. Aceasta inseamna ca variabilele statice interne ofera un mijloc de alocare permanenta si privata de spatiu intr-o functie. Sirurile de caractere care apar intr-o fucntie, ca de exemplu argumentele lui printf, s sint statice interne.
O variabila statica externa este recunoscuta in rstul fisierului sursa in care este declarata, dar nu intr-un alt fisier. Variabilele externe statice ofera astfel o modalitate de a ascunde nume ca buf si bufp in combinatia getch-ungetch, care trebuie sa fie externe ca sa poata fi partajabile si care totusi nu sint vizibile pentru utiliztorii luigetch si ungetch, asa ca nu exista nici o posibilitate de conflict. Daca cele doua rutine si cele doua variabile sint compilate intr-un fisier, cin

static char buf[BUFSIZE]; /* bufer pentru ungetch /
static int bufp = 0; / urmatorea pozitie libera in buf */
...
getch() {...}
ungetch(c) {...}

atunci nici o alta rutina nu va fi in stare sa acceada buf si bufp; in fapt, ele nu intra in conflict cu late variabile cu aceleasi nume din alte fisiere ale aceluiasi program .
Memorarea statica, atit cea interna cit si cea externa se specifica prefixind declaratia normala cu cuvintul "static". Variabila este externa daca este definita in afara oricarei functii si este interna daca este definita intr-o functie.
In mod normal, functiile sint obiecte externe; numele lor sint cunoscute global. Este posibil, totusi, ca o functie sa fie declarata "statica "; acest lucru face numele ei sa fie necunoscut inafara fisierului in care este declarat.
In limbajul C, "static" conteaza nu numai permanenta dar si un grad din ceea ce ar putea fi numit "taina". Obiectele interne statice sint cunoscute numai in interiorul unei functii ;obiectele externe statice (variabile sau functii) sint cunoscute numai in fisierul sursa in care apar, iar numele lor nu interfereaza cu variabile sau functii cu acelas si nume care apar in alte fisiere. Variabilele statice externe si functiile sint o modalitate de a ascunde obiectele "date" si orice rutina interna care le manipuleaza astfel incit orice alta rutina sau data nu poate intra in conflict cu ele, nici macar din greseala. De exemplu, getch si ungetch formeaza un "modul" pentru introducera si extragerea de caractere; buf si bufp pot fi statice asa ca sint inaccesibile din afara. In acelasi mod, push ,pop, clear formeaza un modul pentru lucrul cu stiva; val si sp pot fi statice externe !
avatar
zooky
Moderator
Moderator

Numarul mesajelor : 147
Data de inscriere : 15/03/2009
Varsta : 24
Localizare : Cernatesti City

Vezi profilul utilizatorului http://e-learning.forumhit.ro

Sus In jos

Vezi subiectul anterior Vezi subiectul urmator Sus


 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum