There are 3 main uses for the static.
1. If you declare within a function: It retains the value between function calls
2. If it is declared for a function name: By default function is extern..so it will be visible from other files if the function declaration is as static..it is invisible for the outer files
3. Static for global variables: By default we can use the global variables from outside files If it is static global..that variable is limited to with in the file.
int t = 10;
int x = 0;
printf("After first call \n");
printf("After second call \n");
printf("After third call \n");
static int y = 0;
int z = 10;
printf("value of y %d z %d",y,z);
value of y 0 z 10 After first call
value of y 10 z 10 After second call
value of y 20 z 10 After third call