Использование переменных в функции

Локальные переменные.

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

Пример 2: Функция находит максимальное значение из двух целых чисел

...

int max (int a, int b) // a, b - формальные параметры

{ //------------------------ тело функции

int r; // локальная переменная r

if (a>=b) r=a;

else r=b;

return (r); // Возврат результата

}

void main()

{ int x=4, y=10, big;

// Вызов функции max, x,y - фактические параметры

big = max (x,y);

printf ("big=%d\n", big); // big=10

printf ("r=%d\n", r); // ошибка, переменной r уже нет!!!

}

При вызове формальные параметры функции max() инициализируются фактическими значениями: a =4 b =10

После окончания работы возвращаемое значение передается в точку вызова функции, значение локальной переменной r, возвращенное функцией max () возникает справа от знака присваивания в операторе big = max (x,y);

Статические переменные.

Статические переменные могут быть использованы в теле функции. В отличии от локальных, статические переменные создаются и инициализируются при первом входе в функцию и сохраняются на протяжении выполнения всей программы. Статические переменные в определении функции используются в том случае, если нужно сохранять результат вычислений между вызовами функций.

Пример 3: Использование статических переменных в определении функции.

#include <stdio.h>

// определение функции plus1()

void plus1()

{static int x=0;//инструкция выполняется один раз

int y=0; // выполняется при каждом вызове

x=x+1;

y=y+1;

printf("x=%d, y=%d \n",x,y);

} // переменная y уничтожается, переменная x сохраняется

void main()

{plus1();

plus1();

y++; // переменной y уже нет (будет ошибка!)

plus1();

x++; // переменная х существует, но не видна здесь (будет ошибка!)

}

Инструкция х=0 (в теле функции) выполняется только один раз, при первом вызове функции plus1(). Поскольку переменная х сохраняется,происходит её увеличение на единицу при каждом вызове функции.

Локальная переменная y создается каждый раз заново при вызове функции plus1(), при выходе из функции она уничтожается, и поэтому её значение не сохраняется между вызовами функции.

В результате работы программы, на экране будет напечатано:

При 1-ом вызове х=1, y=1

При 2-ом вызове х=2, y=1

При 3-ем вызове х=3, y=1


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: