Ваша первая попытка добавить счетчик, который всегда равен 1, говорит мне, что вы новичок. Одна очень важная концепция, с которой вам нужно разобраться - это «сфера действия». Когда вы создаете локальную переменную в функции, переменная выделяется из стека каждый раз, когда вызывается функция, и рассматривается как "в области действия" на протяжении всей функции, пока вы не вернетесь. Когда вы возвращаетесь из функции, память, выделенная для переменной, освобождается и больше не считается "в области видимости". Без конкретного указания компилятору, что вы хотите, чтобы переменная зависала (используя ключевое слово static
), вы не гарантированно получите тот же кусок памяти, и даже если вы действительно получили тот же кусок памяти, очень вероятно, что какая-то другая функция использовала его и уничтожила любое значение, которое там было.
Поэтому, чтобы конкретно ответить на ваш вопрос, вы должны использовать ключевое слово static
в объявлении переменной для своего счетчика, например static int counter = 0;
с начальным значением 0.