Static vs. Automatic


/** version 1 - automatic variables **/


#include <stdio.h>

void counter(void);

int main(void)
{
  int i;

  for (i = 0; i < 10; i++)
    counter();

  return (0);
}


void counter(void)
{
  int count = 0;

  printf("\nCount = %d", count);
  count++;
}

/********************************************/
OUTPUT from static.c version 1

Count = 0
Count = 0
Count = 0
Count = 0
Count = 0
Count = 0
Count = 0
Count = 0
Count = 0
Count = 0


/** version 2 - static variables **/ #include <stdio.h> void counter(void); int main(void) { int i; for (i = 0; i < 10; i++) counter(); return (0); } void counter(void) { static int count = 0; printf("\nCount = %d", count); count++; } /*********************************************/ OUTPUT from static2.c Count = 0 Count = 1 Count = 2 Count = 3 Count = 4 Count = 5 Count = 6 Count = 7 Count = 8 Count = 9