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