9.3. static

static variables are variables that don't get deleted when they fall out of scope, they are permanent and retain their value between calls to the function. Here's an example:

Example 9-1. list_squares.c

#include <stdio.h>

int get_next_square(void);

int
main()
{
  int i;

  for(i = 0; i < 10; i++)
    printf("%6d\n", get_next_square());

  printf("and %6d\n", get_next_square());

  return 0;
}

int
get_next_square()
{
  static int count = 1;

  count += 1;

  return count * count;
}
     
This will list the squares of the numbers from zero to ten. Zero to nine are printed by the loop and the square of ten is printed afterwards just to show it still has it's value.