статическая переменная в c

Привет Я готовлюсь к тесту на C, и я столкнулся с вопросом, на который я не могу найти ответа.

Программист написал программу для подсчета количества пользователей (Count.h, Count.c):

/******** FILE: Counter.h ***********/
static int counter = 0;
int getUsersNum ();
/******** END OF FILE: Counter.h ****/

/******** FILE: Counter.c ***********/
#include "Counter.h"
int getUsersNum ()
{
    return counter;
}
/******** END OF FILE: Counter.c ****/

И тестировщик, чтобы проверить это:

/******** FILE: CounterMain.c ***********/
#include "Counter.h"
#include <stdio.h>
int main ()
{
    int i;
    for (i=0;i<5;++i)
    {
        ++counter;
        printf ("Users num:  %d\n", getUsersNum());
    }
    return 0;
}
/******** END OF FILE: CounterMain.c ****/

Удивительно, но результат был:

Users num: 0
Users num: 0
Users num: 0
Users num: 0
Users num: 0

Я не понимаю, почему при таком использовании статической переменной счетчик не увеличивается .. почему они получили такой ввод?

всем спасибо!

8
задан Asher Saban 3 October 2010 в 17:34
поделиться