Well said Wledge. And not to insult matheo917's intelligence but I'm going to explain what you said differently (using an example).
Example
Code:
int MyFunction(int param) {
static int i = 0;
if(!i)
i = param;
return i;
}
You would call MyFunction() with a number as its parameter.
Code:
#include <stdio.h>
int main(void) {
int i, j;
i = MyFunction(6);
j = MyFunction(10);
printf("i = %d\nj = %d", i, j);
return 0;
}
If you run the code you'll find that MyFunction() returns six in both calls. That is because the variable i inside of MyFunction() is static not automatic. If you changed the code so that i is not static you would find that the first call would produce a return of six and the second would return ten.