#c #variables #static
#c #переменные #статический
Вопрос:
Я пытаюсь использовать статическую переменную в качестве счетчика для количества раз, когда вызывалась функция. По сути, я заставляю функцию A вызывать функцию B несколько раз, и я хочу, чтобы функция B возвращала это значение функции A, чтобы его можно было отобразить. Пример моего тестового кода приведен ниже (здесь main — это функция A, а showStat — функция B). На данный момент результатом является 012340; желаемый результат — 012344. Заранее спасибо.
int showStat()
{
static int statNum;
cout<<statNum; //function check
statNum ;
return statNum;
}
int main()
{
int statNum;
for( int i = 0; i < 5 ; i )
{
showStat();
}
cout<<statNum;
return 0;
}
Комментарии:
1. Два символа
statNum
не связаны между собой (и ваш код в любом случае демонстрирует неопределенное поведение). Чтобы перейти к желаемому результату, измените вызовshowStat();
наstatNum = showStat() - 1;
2. Или измените statNum на глобальную статическую переменную в классе и удалите все другие инициализации
Ответ №1:
В основном, измените
showStat();
Для
statNum = showStat();
У вас есть две переменные, называемые statNum. По-видимому, подсчет происходит в статической переменной внутри функции showStat(). Но в main() без чтения возвращаемого значения showStat() вы просто печатаете неинициализированную локальную переменную, которой компилятор случайно присвоил начальное значение 0.
Комментарии:
1. Это приведет к следующему результату:
012345
.2. @IInspectable его описание проблемы было самопротиворечивым. Да, код выведет 5 (отличается от 4, о которых он упоминал); но в то же время он сказал «подсчитайте, сколько раз вызывается функция». Его цикл вызывает это пять раз.
3. Спасибо за помощь! Я понимаю, что у меня должен был быть statNum до cout<<statNum. Итак, сделав это и рекомендованное выше изменение, я получил именно то, к чему стремился. Еще раз спасибо!