void function(void) { int local = 0; // local (automatic) variable allocated on stack of function static int foo = 0; // declaration and initialization of foo foo++; // every time the function is called foo would // be incremented } // end of function. "local" would disappear. foo stays. function(); // first call to function, foo is 1, local is 0 function(); // second call, foo is 2, local is 0