Локальные и глобальные переменные в С++.

Каждая переменная имеет свою область видимости, то есть такую область, в которой можно работать с переменной. За пределами этой области, о данной переменной ничего известно не будет, а значит и использовать её нельзя.

Существуют локальные и глобальные переменные.

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

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

В качестве примера можно рассмотреть такой код:

#include <iostream>
 
int i = 2; // глобальная переменная (видна в любом участке кода программы)
 
int sum()
{
	int k = 2;  // локальная переменная (видна только внутри функции sum())
	return i + k;
}
 
int main()
{
	std::cout << i << std::endl << sum() << std::endl;
}

В примере выше мы видим переменную i, которая описана вне любых функций в программе. Её область видимости и действия – вся программа без ограничения. А раз она “легитимна” во всей программе, во всех её функциях и блоках операторов, заключенных в {}, то её называют глобальной переменной.

Переменная k является локальной, и её область видимости определена открывающей и закрывающей фигурными скобками функции sum() – {…}. Дальше ей хода нет, поэтому и использовать её нельзя вне этой функции.

В С++ существует такая операция, как разрешение области действия ::. Эта операция позволяет обращаться к глобальной переменной из любого места программы. Нужно поставить двойное двоеточие перед именем переменной. Рассмотрим пример:

// variables.cpp: определяет точку входа для консольного приложения.
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
void example();
int variable = 48; // инициализация глобальной переменной
 
int main(int argc, char* argv[])
{
       int variable = 12; // инициализация локальной переменной
       cout << "local  variable = " << ::variable << endl; // печать значения содержащегося в глобальной переменной
       example(); // запуск функции
       system("pause");
       return 0;
}
 
void example()
{
       cout << "global variable = " << variable << endl; // функция видит только глобальную переменную
}

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

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Математические функции в С++

Математические функции в С++

В языке С++ математические функции определены в заголовочном файле <cmath> функции выполняющие некоторые часто используемые математические задачи. Например, нахождение корня, возведение в степень, sin(), cos()

 
Работа с файлами в С++.

Работа с файлами в С++.

Файл – именованный набор байтов, который может быть сохранен на некотором накопителе. Файл имеет уникальное имя, например файл.txt. Для работы с файлами в С++ необходимо

 
Структуры в C++.

Структуры в C++.

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

 
Перегрузка методов класса в C++.

Перегрузка методов класса в C++.

Методы класса можно перегружать также, как и обычные функции. Это очень удобно, когда нужно сделать несколько конструкторов, которые будут принимать разные параметры. Например, создадим основу

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: