Programació estàtica en C.

Static C Programming



En aquest tutorial, explicarem la paraula clau estàtica aplicant-la a variables i funcions. Static és una paraula clau que s’utilitza en la programació en C i es pot aplicar mitjançant la sintaxi següent:

{data type} estàtic {nom de la variable}







Variables locals estàtiques

Quan una variable d'una funció és estàtica, la variable conserva el seu valor entre les trucades a funcions.



//Example1.c

#incloure

intfun1()
{

intcomptar=0;
comptar++;
tornarcomptar;
}

intfun2()
{
estàtic intcomptar=0;
comptar++;
tornarcomptar;
}

intprincipal()
{
printf (Torna la primera trucada 'fun1:% d n',fun1());
printf (Torna la segona trucada 'fun1:% d n n',fun1());

printf (Torna la primera trucada 'fun2:% d n',fun2());
printf (Torna la segona trucada 'fun2:% d n',fun2());

tornar 0;
}


A l'exemple 1.c, tenim dues funcions: fun1 () i fun2 () . En fun1 () , declarem una variable (recompte) i la inicialitzem a 0. Després, incrementem la variable de recompte i retornem el valor resultant. Utilitzant main () , cridem fun1 () dues vegades i, cada vegada, es retorna un valor d'1 perquè la variable de recompte s'esborra quan es crida a fun1 () s'ha completat. En fun2 () hem declarat la variable de recompte com a variable estàtica. Per tant, es conserva el seu valor. Utilitzant main () , cridem fun2 () dues vegades: la primera vegada es torna un valor d'1 i la segona vegada es torna un valor de 2.



Variables globals estàtiques

Una variable global estàtica es comporta de la mateixa manera que altres variables globals, però no es pot accedir des d’un altre programa C.





Funcions estàtiques

A C, les funcions són globals per defecte. Tanmateix, si declarem una funció estàtica, la funció és local i no es pot accedir des d’un altre programa C.

Inicialització de variables estàtiques

Si no s’inicialitza explícitament una variable estàtica, s’inicialitza com a 0.



//Example2.c

#incloure

intprincipal()
{
estàtic intjo;

printf ('Valor d'i:% d n',jo);

tornar 0;
}


A Example2.c, hem declarat una variable estàtica i que no està inicialitzada. Tanmateix, com que la variable és estàtica, s'inicialitza automàticament a 0.

És important tenir en compte que una variable estàtica ha de ser inicialitzada per un literal constant; no podem utilitzar el valor retornat d’una funció per inicialitzar una variable estàtica.

//Example3.c

#incloure

intfun1()
{
tornar 5;
}

intprincipal()
{
estàtic intjo=fun1();
printf ('Valor d'i:% d n',jo);
tornar 0;
}


A Example3.c, intentem inicialitzar una variable estàtica mitjançant el valor retornat de fun1 () . Tanmateix, com podeu veure, es torna un error quan es compila el codi.

Resum

La vida útil d'una variable estàtica i la vida útil del programa són iguals.

Si no s’inicialitza una variable estàtica, prendrà un valor per defecte de 0.

Ni una variable estàtica global ni una funció estàtica són accessibles des d’un programa diferent del que es va definir.