Локальные и глобальные переменные


Локальными называют любые переменные, объявленные внутри функции. Локальные переменные также называются автоматическими переменными, так как они создаются и разрушаются автоматически.

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

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

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

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

· обеспечить большее, по сравнению с доступной памятью, суммарное пространство, занимаемое всеми локальными переменными;

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

Глобальныминазывают переменные, объявленные в программе вне функций (в том числе и вне функции main()). Глобальные переменные существуют в течение всего времени работы программы и занимают память независимо от того, используются они или нет.

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

Локальным переменным нужно присваивать начальные значения до их использования, так как в момент объявления значения этих переменных не определены. Глобальные переменные автоматически инициализируются нулевыми значениями при их объявлении.

Если в функции есть локальная переменная с именем, совпадающим с именем глобальной переменной, то внутри функции используется локальная переменная. Глобальная же переменная доступна внутри функции посредством операции разрешения области видимости (::):

int a = 55;

int main(){

int a =7; cout<<" a = "<<a<<endl; // a = 7

cout<<" a = "<<::a<<endl; ... // a = 55

}

Следует отметить, что параметры функции являются локальными переменнымидля функции, а переменные, объявленные в функции main(),являются локальными для функции main().

Локальные и глобальные переменные в программе характеризуются своей областью видимости, определяющей их доступность в различных частях программы. Локальные переменные существуют и видимы только внутри своей функции, их можно использовать только в своей функции, т.е. имеют локальную область видимости. Глобальные переменные имеют глобальную область видимости, т.е. доступны в любой функции программы, включая функцию main().

// Пример 5.5. Написать программу для вычисления количества цифр

// в заданном числе num с использованием глобальных переменных.

#include <iostream>

using namespace std;

void kolCifr(); // прототип функции kolCifr()

int k = 0; // глобальная переменная k

long num; // глобальная переменная num

int main(){

cout<<"Enter num: "; cin>>num;

cout<<"num = "<<num<<endl;

kolCifr(); // вызов функции kolCifr()

cout<<" kol_cifr = "<<k<<endl;

system("pause");

}

void kolCifr(){

while(num){

k++; num = num / 10;

}

}



Дата добавления: 2022-05-27; просмотров: 68;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.015 сек.