Promenljive koje postoje i kada se izvrši funkcija nazivaju se statističke.
Kao i automatske i statističke promenljive su lokalne u funkcii u kojoj su deklarisane, razlika je u tome što statističke promenljive ne isčezavaju kada funkcija koja ih sadrži prekine izvršavanje. Kompajler čuva njihove vrednosti od poziva do poziva.
Deklaracija statističkih promenljivih
{
static int a=1;
static int b=2;
float c=0.0;
…
}
Razmislite! Dali su sve promenljive statističke?
Pr.
#include<stdio.h>
static int a=1;
static int b=2;
float c=0.0;
int uvecaj()
{
static int x=0;
x++ ;
printf(„%d\n“,x);
return(x);
}
main()
{
uvecaj();
uvecaj();
uvecaj();
return 0;
}
Nakon izvršavanja programa ispisuje se ,1, 2, 3
U programu se funkcija uvecaj() poziva tri puta. U njoj se statistička promenljiva x, kojoj je dodeljena inicijalna vrednost 0, samo jedanput inicijalizira, kasnije promenljivoj x se dodeljuje vrenost sačuvana nakon poziva funkcije.
Inicijalizacija promenljive se realizuje tokom kompajliranj, to znači da kompajler rezerviše prostor u memoriji za statističku promenljivu i tamu smešta inicijalnu vrednost. Kada program započne sa izvršavamjem, promenljiva vec ima vrenost.
Ako nije predviđena inicijalna vrednost za promenljivu, kompajler sam dodeljuje i to za promenljivu tip int-0, chr-.