Локальні та глобальні змінні

Усі змінні, оголошені всередині довільної функції є локальними змінними цієї функції. Це означає, що їх значення зберігаються тільки на час виконання цієї функції. Інколи кажуть, що локальні змінні мають область видимості обмежену тілом функції, в якій вони оголошені. Усі формальні параметри функції розглядаються також як локальні змінні цієї функції. Усі змінні, оголошені поза межами всіх функцій з яких складається програма, називаються глобальними. Доступ до таких змінних можливий у будь-якій функції. Іншими словами, область видимості глобальних змінних обмежена лише файлом у якому знаходиться вихідний код програми.

У мові С++ поняття локальності змінних є дещо глибшим і розширеним у порівнянні з іншими мовами програмування (наприклад, з мовою Паскаль). Локальні змінні можна оголошувати у довільному місці функції в межах так званого програмного блоку під яким розуміють довільну послідовність оголошень та операторів, яка знаходиться між парою фігурних дужок {}. Тіло довільної функції в С++ також розглядається як програмний блок. У цьому випадку змінна є локальною по відношенню до блоку в якому вона оголошена і її область видимості обмежена цим блоком. Більше того, в С++ дозволяється використовувати однакові ідентифікатори для позначення змінних в різних блоках. Це можливо завдяки вбудованому механізму перекриття імен мови С++. Наступний приклад програми демонструє ці можливості.

#include <iostream>

#include <conio.h>

void a (void); // прототип функції

int x=1; // глобальна змінна

using namespace std;

void main()

{

int x = 5; // локальна змінна функції main

cout << "x=" << x <<endl;

{

int x=7; // локальна змінна внутрішнього блоку main

cout << "x=" << x <<endl;

} _

cout << "x=" << x << "\n";

a();

_getch();

}

void a(void) // опис функції a_

{

cout << "x=" << x++ << "\n";

}

Результат виконання цієї програми зображено на рис.1.

Рис.1. Результат виконання програми, яка демонструє механізм перекриття імен мови С++


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



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