2014-02-11 7 views
-2

Я хочу разработать систему, в которой нужно отслеживать событие , часто возникающее в системе. Я могу сделать это, вызвав функцию , увеличив предыдущее значение события-встречного счетчика и распечатав его значение, а затем вернемся. Для выполнения мне нужна переменная, которая может сохранить свое значение даже после того, как функция вернется, так что при следующем вызове функции предыдущее значение счетчика может быть увеличено на единицу и таким образом on.Переменные типы глобальные, статические, локальные и автоматические

По вашему мнению, в каком виде переменной мы должны использовать локальную, глобальную, статическую или авто? Подтвердите свой ответ с помощью допустимых аргументов.

+2

Это домашнее задание? (Я тоже не спускал вниз, но не ожидал, что кто-то здесь сделает вам домашнее задание, покажут немного усилий) –

+1

Я не спустил вниз, но помогу downvoter сказать: вам нужно сначала изучить язык, определить проблема и придумать решение, попробуйте. Если это не сработает, тогда придите сюда и спросите – texasbruce

+0

. Обратите внимание: если вам нужно получить доступ к переменной извне функции (например, из другой функции для печати счетчика), то она должна быть определена вне функции (но должна быть 'static' в файле C или в анонимном пространстве имен в файле C++). Хотя вы могли бы спроектировать функцию, которая либо подсчитывалась, либо печаталась в соответствии с некоторым аргументом, это был бы не очень красивый дизайн - серьезное смешение в целях функции. –

ответ

1

Локальные и авто являются такими же, как и четвертый тип, не являются локальными. Вы не можете использовать auto, поскольку его переменная переопределяется при каждом вызове.

Либо глобальный, либо статический, в зависимости от потребностей вашего дизайна. Если вы хотите использовать переменную в каком-либо другом файле, сделайте ее глобальной.

int count; // outside the function calls 

Если вы хотите, чтобы сфера его быть локальными по отношению к этой функции и приращение для каждого времени событие происходит сделать его статическим внутри функции

static int count = 0; 
// variable is defined only once subsequent calls to it wont redefine it 

вы можете сделать его глобальным, а также статические если вы хотите, чтобы весь файл обращался к нему, но не к внешнему миру.

static int count = 0; // outside of any function calls. 
Смежные вопросы