Область видимости переменных

 

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

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

Переменная, объявленная вне функции (обычно такое объявление стоит сразу после блока с #include и #define), называется глобальной. Область видимости такой переменной вся программа. Необходимо быть осторожным при совпадении имен локальных переменных и глобальной переменной. Происходит маскирование глобальных переменных, то есть внутри функции. Компилятор дает приоритет локальной переменной, то есть если используется переменная по имени, то это локальная переменная, для применения глобальной переменной необходимо использовать операцию контекста :: перед именем. Пример представлен ниже.

#include<iostream>

using namespace std;

int a=-1,b=5; // глобальные переменные с инициализацией

int sum(int a,int b) //функция считает сумму двух чисел, имена совпадают

{

return (a+b);

}

int main(void)

{

setlocale(NULL,"Russian");// подключение русской кодировки

int a=1,b=3;// локальные переменные функции main()

int s=sum(::a,::b);// вызов функции с глобальными переменными

//вывод на экран результата

cout<<"сумма "<<::a<<"+"<<::b<<"="<<s<<endl;

s=sum(a,b);// вызов функции с локальными переменными

//вывод на экран результата

cout<<"сумма "<<a<<"+"<<b<<"="<<s<<endl;

return 1;

// конец программы

}

Результат работы программы примет вид (рис. 48).

 

Рис. 48. Результат работы программы, использующей глобальные переменные