Jaký je rozdíl mezi lokálními statickými a globálními statickými proměnnými?


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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *