Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.О.П / 3_кол / Лекції / лекции_C++ (14)у.doc
Скачиваний:
9
Добавлен:
30.05.2020
Размер:
124.93 Кб
Скачать

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

Всі змінні, які використовуються в програмі, можна розділити на дві групи: локальні і глобальні. Локальні змінні – це змінні, які визначаються усередині функції і використовуються лише усередині функції.

У мові C/C++ локальні змінні можна визначати усередині блоку програми. Блок програми – це набір директив (у тому числі і опис змінних), які поміщені у фігурні дужки. Локальні змінні створюються при вході в блок і ліквідовуються при виході. Змінні, які оголошені в одному блоці, не мають жодного відношення до змінних іншого блоку навіть в разі збігу імен.

Наприклад:

void main()

{ .

// 1-й блок.

{

int x, y, z;

...

}

// 2-й блок.

{

int x, y, z;

...

}

}

Змінні x, y, z першого блоку ніяк не пов'язані із змінними x, y, z другого блоку. Це в принципі різні області пам'яті. Параметри, які перераховуються в заголовку функції, відносяться до локальних змінних.

Глобальні змінні – це ті змінні, які оголошуються поза функцією (перед заголовком функції або блоку програми). Глобальні змінні можна використовувати в будь-якій директиві, незалежно від того, в якій функції або в якому блоці ця директива використовується.

Програма fun_5

float ymn(float x, float y); // Прототип функції ymn().

int w= -10;

void main()

{ cout << “До входу в 1-й блок w= “ << w << “\n”;

// 1-й блок.

{ int x = 2, y = 5, z = 3;

w = x * y + z;

}

cout << “Після виходу з 1-го блоку w= “ << w << “\n”;

// 2-й блок.

{ int x = 5, y = 7, z = 2;

w= (x + y) * z; } cout << << “Після виходу з 2-го блоку w = “ << w << “\n”;

cout << “Після звернення до функції ymn = “ << ymn(10,10) << “\n”;

cout << “Після звернення до функції w = “ << w << “\n”;

getch();

}

float ymn(float x, float в) // Функція визначає добуток 2-х чисел.

{ float z;

z = y * x + w;

w = 500;

return z; }

Після виконання програми на екрані з'явиться наступна інформація:

До входу в 1-й блок w = -10

Після виходу з 1-го блоку w = 13

Після виходу з 2-го блоку w = 70

Після звернення до функції ymn = 170

Після звернення до функції w = 500

Тут слід звернути увагу на те, що в головній програмі і у функції ymn() змінна w не оголошується, проте і в директивах головної програми, і в директивах функції змінна w використовується.

Зауваження 3. Локальні змінні мають пріоритет перед глобальними змінними. Це означає наступне. Якщо імена глобальною і локальною змінних збіглися, то ці змінні між собою не зв'язані і визначають різні області пам'яті. Для виклику функції (як вже наголошувалося вище) вистачає там, де це необхідно, записати директиву, в яку входить ім'я функції із списком параметрів.

Наприклад, директива

cout << “2.5*2= “<< ymn(2.5,2);

виводить на екран результат множення числа 2.5 на 2:

2.5*2= 5

Директива

r = 7*ymn(3.5,2);

у змінну r засилає значення множення числа 7 на результат, який обчислюється функцією ymn() для чисел 3.5 і 2.

3. Зона дії функції

Кожна функція, у тому числі і головна програма main(), є блоком, в який входять код програми і дані. Взагалі кажучи, цей блок закритий і недоступний для інших функцій, якщо лише в самому блоці не відбувається виклик цих функцій. Іншими словами, на дані, які визначені в одній функції, не можуть впливати інші функції, оскільки в різних функцій різні зони дії. Але в будь-якій мові є інструменти (правила, механізми), які дозволяють, при необхідності, різним функціям взаємно впливати на області своїх дій. Змінні, які визначаються усередині функції, є локальними. Локальні змінні створюються при зверненні до функції, і при виході з цієї функції вони знищуються, тобто інформація в локальних змінних не зберігається між викликами функції. Виключення складають глобальні змінні і змінні, які оголошуються як static. При використанні глобальних параметрів треба мати на увазі наступне. В разі збігу імен глобальних і локальних змінних пріоритет мають локальні. Зона дії функції в цьому випадку не поширюється на ті глобальні змінні, імена яких збігаються з іменами локальних змінних.

Соседние файлы в папке Лекції