Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lexzii_08 / lexs_4_func.DOC
Скачиваний:
18
Добавлен:
17.05.2015
Размер:
113.15 Кб
Скачать

Класифікація параметрів і результатів функцій

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

  • за допомогою return

  • за допомогою параметра

одновимірний

багатовимірний

покажчиків

Скалярне значення, повертаєме:

Масив:

Структуру:

Розглянемо деякі типи задач для використання параметрів і результатів виконання функцій у відповідності з класифікацією на рисунку.

Формальний параметр – ім’я скаляра використовується для передачі функції одного значення. Фактичним параметром при цьому може бути вираз типу сумісного з типом формального параметра.

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

За допомогою параметра – масива можна передати в функцію масив на обробку і отримати результат у вигляді масива даних любого типу. Формальним і фактичним параметром може бути ім’я масиву або покажчик на масив.

Формальний параметр – ім’я структури використовують для передачі (копіювання) в функцію значень структури. Фактичним при цьому може бути тільки ім’я структури. Формальний параметр – покажчик на структуру – використовується для передачі у функцію адреси (покажчика) структури або масиву структур. Фактичним параметром при цьому може бути адреса (покажчик) структури викликаючої функції.

Повернення результату – покажчика на скалярне значення – можна виконати за допомогою оператора return або за допомогою параметра. Повернення результату – значення покажчика на одне конкретне значення використовується, наприклад, в задачах пошуку адреси заданого значення в масиві даних будь-якого типу і при роботі зі зв’язаними структурами – стеком, чергою або списком. Для повернення значення покажчика за допомогою параметра формальним параметром повинен бути покажчик на покажчик, а фактичним – адреса покажчика на дані визначеного типу. Формальний параметр – ідентифікатор скалярної змінної. В прикладі використовується дві функції: star i slava. Функція star виводить з нового рядка m зірочок (*) за допомогою функції putchar. А функція slava – k раз виводить один і той же рядок name за допомогою функції printf. Функції star i slava не повертають значень ні за допомогою return, ні за допомогою списка параметрів.

Формальні параметри функції slava:

--name — ім’я покажчика на символьні дані;

--k—ім’я змінної—кількість повторень виведення рядка;

В списку фактичних параметрів оператора виклику функції slava рядкова константа визначає покажчик його початку; значення 3 – ціла константа—кількість повторень виведення цього рядка; k i m—формальні параметри функцій star i slava—є параметрами – значеннями. Вони дозволяють використовувати в якості фактичних параметрів вирази, в окремому випадку яких є константи 30 і 3.

Приклад програми з функціями виведення символьних даних.

# include <stdio.h>

# include <conio.h> // для clrscr

void main ( )

{ void slava ( char *name, int k); // оголошення функції slava

void star ( int m); // оголошення функції star

clrscr ( )

star (30); // виклик функції star для виведення 30 символів ’*’

slava (“ Мова Сі зручна і ефективна…”,3); // виклик slava

star (30);

printf(“\n Для завершення програми натисніть будь яку клавішу \n”);

getch( );

}

//---- Функція slava:----

{void slava (char *name, int k) // Заголовок функції

for (i=0; i<k; i++) printf (“\n %s”, name);

}

//---- Функція star----

void star (int m)

{ int i;

putchar(‘\n’);

for (i=0; i<m; i++) putchar(‘*’);

}

Соседние файлы в папке lexzii_08