Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-1 Программирование С++ / метод_лб_ пз_Інформатика.doc
Скачиваний:
5
Добавлен:
31.01.2021
Размер:
699.9 Кб
Скачать

Void fun ( int p)

{

++ p;

cout << " p=" << p << endl;

}

Void main ( )

{

int x = 10;

fun (x); // виклик функції

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

}

У результаті роботи цього фрагмента програми буде виведено: р=11, х = 10, оскільки для виклику функції fun(x) до неї передається копія значення рівного 10, під час виконання цієї функції значення p збільшується на 1, тобто (++р) і, тому виводиться р = 11, але за межами функції зазначене значення не змінюється. Якщо треба змінити змінну оригінал, тобто передати зміну параметра за межами тіла функції, то можна передати значення параметра за посиланням або використовувати параметр-покажчик. Тоді, використовуючи параметр- посилання, одержимо :

// Використання параметра - посилання

void fun (int &р)

{ ++p;

cout << "p = " << р << endl;

}

void main ( )

{

int x = 10;

fun( x );

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

}

У результаті буде виведена інформація: р=11 і х=11.

Під час використання аргументу-покажчика програма буде мати вигляд:

// Використання параметра - покажчика

void fun2 (int *p)

{

++*р;

cout << "*p = " << *p << endl;

}

void main ( )

{

int x = 10;

fun2 ( &x );

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

}

У цьому випадку одержуємо той же результат, тобто р = 11 і х = 11.

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

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

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

У випадку, коли необхідно зберегти значення локальних змінних між викликами функції, їх треба описати як статичні за допомогою службового слова static, наприклад:

static int x, y; або static float p = 3.25;

Статична змінна схожа на глобальну, але доступна тільки в тій функції, у якій вона оголошена.

Таким чином, можна зробити висновок:

 параметри функції передаються в неї за значенням, тому за межами функції вони не змінюються, тобто їх не можна використовувати для передачі результату роботи функції;

 при передачі результату функції за її межі використовуються: або передача параметрів за посиланням (&р); або передача за покажчиком (*р), у цьому випадку під час звертання до функції застосовується символ адреси & , тобто (&р); або як параметр функції варто використовувати глобальні змінні;

 локальні (звичайні) змінні використовуються в тілі функції, існують тільки під час роботи функції, а при виході з неї знищуються, тому такі змінні називаються автоматичними і їх можна використовувати тільки для перетворень усередині функції;

 якщо виникає необхідність збереження значень локальних змінних між викликами функції, то вони повинні бути оголошені як статичні, тобто з описом static, наприклад:

static char st[ ] = "Тесленко А.М.";

 у якості вхідних (і вихідних) формальних аргументів функцій можуть використовуватися масиви як фіксованої довжини, так і змінної; якщо використовується в якості формальний масив змінної довжини, то обов'язково серед аргументів функції повинна бути змінна, що вказує длину масиву, наприклад:

int minmas (int mas [ 50]); // Масив фіксованої довжини

int minmas (int mas [ ], int n); //Масив змінної довжини

int minmas (int *mas, int n); //Масив змінної довжини

 усі масиви  формальні аргументи передаються за адресою, тобто як покажчики;

 на початку програми записується заголовок використовуваної функції, який називається прототипом , наприклад:

double sgr (double); // Прототип функції sqr

. . . . . . . . .