Nejlepší odpověď
globální a místní: souvisí s rozsahem, tj. kde lze použít
static: souvisí s časem a volatilitou, tj. jak dlouho lze použít
statická proměnná v programu C & C ++ je definována (přidělená paměť a počáteční hodnota nula) pouze jednou, dokonce i řízení programu provede deklaraci znovu. Hodnota a životnost statické proměnné je zachována až do konce programu, ale lze ji použít uvnitř rozsahu.
void staticTest(){
static int i;
printf("\%d\n",i);
i++;
}
void main(){
staticTest();
staticTest();
staticTest();
}
Výstup:
0
1
2
Ve výše uvedeném příkladu je demonstrováno použití lokální statické proměnné.
global static: můžete deklarovat statickou proměnnou v globálním rozsahu, také bude téměř stejná jako jiná globální proměnná, kromě toho, že má počáteční hodnotu jako nulu, pokud jí nepřidělíte žádnou hodnotu.
Odpověď
Místní statika:
- Výchozí hodnota je nula
- Uloženo v datové sekci (bss nebo inicializováno) paměti
- Rozsah nebo viditelnost je v bloku nebo funkci
- Život místní statické proměnné začíná a končí pouze programem.
Globální statická:
- Pokud je globální proměnná statická, rozsah nebo viditelnost je pouze v tomto souboru, i když použití extern v jiném souboru nebude fungovat . Poskytuje chybu propojení.
Příklad 1:
static int a=20;
void xyz()
{
printf("\%d, ", a);
a = 100;
}
int main()
{
printf("\%d, ", a);
{
static int a = 10;
printf("\%d, \n", a);
xyz();
}
printf("\%d", a);
}
// Output is 20, 10, 20, 100