Читайте также:
|
|
Локальными называют любые переменные, объявленные внутри функции. Локальные переменные также называются автоматическими переменными, так как они создаются и разрушаются автоматически.
Работа программы при наличии в ней функций происходит следующим образом. Операторы программы выполняются последовательно до тех пор, пока не встретится оператор вызова функции. При каждом вызове функции текущий адрес программы запоминается в стеке и служит адресом возврата из функции после завершения её работы.
Стеком называется область памяти компьютера, организованная таким образом, что позволяет добавлять и удалять элементы данных, но при этом доступен только последний добавленный элемент.
Локальные переменные запоминаются в стеке. Стек динамически (т.е. во время выполнения программы) изменяется по мере того, как происходит вызов функций и возврат из них.
В начале работы функция выделяет память в стеке для запоминания своих локальных переменных. После возврата из функции стековая память удаляется, уничтожая все хранящиеся в ней переменные, что позволяет:
· обеспечить большее, по сравнению с доступной памятью, суммарное пространство, занимаемое всеми локальными переменными;
· бесконфликтно объявлять одинаковые идентификаторы для локальных переменных, используемых в различных функциях одной программы.
Глобальными называют переменные, объявленные в программе вне функций (в том числе и вне функции 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;
}
}
Дата добавления: 2015-02-16; просмотров: 82 | Поможем написать вашу работу | Нарушение авторских прав |