Полагаю, если вы говорите о auto
переменных, вы, вероятно, имеете в виду локальные переменные в функции.auto
является значением по умолчанию, это означает, что переменная размещается в стеке при вызове функции и освобождается при ее возврате.static
означает, что переменная выделяется один раз при первом вызове функции и остается выделенной для остальной части программы.Это означает:
int foo() {
static int x = 0;
return x++;
}
printf("%d\n", foo()); // Outputs 0
printf("%d\n", foo()); // Outputs 1
printf("%d\n", foo()); // Outputs 2