Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мищишин електронка.doc
Скачиваний:
1
Добавлен:
08.12.2018
Размер:
1.04 Mб
Скачать

11. Зміна значень параметрів

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

Для зміни значення параметра функція повинна знати адресу пам'яті параметра. Щоб повідомити функції адресу параметра, програма повинна використовувати оператор адреси &. Наступний приклад ілюструватиме, як програма використовує оператор адреси для передачі адрес змінних big і small у функцію change_values:

change_values (&big, &small); \\ Передача параметрів за адресою

Всередині функції необхідно повідомити C++, що програма буде передавати параметри за допомогою адреси. Для цього слід оголосити змінні-вказівники, передуючи ім’я кожнї змінної зірочкою, як показано нижче:

void change_values (int *big, int *small) // Вказівник на тип int

Змінна-вказівник є змінною, яка містить адресу пам'яті. Усередині функції потрібно повідомити C++, що функція працює з адресою параметра. Для цього ви передуєте ім’я параметра зірочкою, як показано нижче:

*big = 1001;

*small= 1001;

Наступна програма CHGPARAM.CPP використовує оператор адреси для передачі адрес параметрів big і small у функцію change_values. Функція, у свою чергу, використовує вказівники ділянок пам'яті параметрів. Отже, зміни в значеннях параметрів, зроблені функцією, залишаються і після завершення виконання функції:

Void cbange_values(int *a, int *b)

{

*a = 1001;

*b = 1001;

cout << "Значення у функції display_values"

<< " рівні " << *a << " і " << *b << endl;

}

Void main(void)

{

int big = 2002, small = 0;

cout << "Значення до функції " << big

<< " і " << small << endl;

change_values(&big, &small);

cout << "значення після функції " << big

<< " і " << small << endl;

}

Якшо відкомпілювати і виконати цю програму, на моніторі з'являться наступні рядки:

С:\> CHGPARAM <ENTER>

Значення до функції 2002 і 0

Значення у функції display_values рівні 1001 і 1001

Значення після функції 1001 і 1001

12.Локальні змінні і ділянка видимості

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

Void some_function(void)

{

Int count;

float result;

}

Наступна програма USEBEEPS.CPP використовує функцію sound_speaker, яка примушує звучати вбудований комп'ютерний динамік стільки разів, скільки вказано параметром beeps. Усередині функції sound_speaker локальна змінна counter зберігає кількість звуків, які видає динамік: