Значення, що повертаються, програмування на c і ​​c

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

if (max (х, у)> 100) printf ( "greater");

for (ch = getchar (); isdigit (ch);). ;

Проте функція не може стояти з лівої сторони оператора присвоювання. оператор типу

swap (х, у) = 100; / * Некоректний оператор * /

неправильний. Компілятор видасть помилку.

Якщо функція оголошується як void, вона не може використовуватися у виразах. Наприклад, припустимо, що f () оголошена як void. Наступні оператори не будуть компілюватися:

int t;
t = f (); / * Немає значення для присвоювання t * /
f () + f (); / * Немає значень для складання * /

Хоча все функції не типу void мають значення повернення, при написанні програм зазвичай використовується три типи функцій. Перший тип - це обчислювальні функції. Він призначений для виконання операцій з аргументами і повертає значення, грунтуючись на цих операціях. Прикладом таких функцій є sqr () і sin () - стандартні бібліотечні функції.

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

Останній тип функцій не має певного значення, що повертається. Функція є звичайною процедурою і не видає значення. Прикладом служить srand (), яка використовується для ініціалізації генератора випадкових чисел функції rand (). Іноді функції, які не видають осмисленого результату, щось все-таки видають. Наприклад, printf () повертає число надрукованих символів. Дуже важко знайти програму, яка перевіряє це. Отже, хоча всі функції, крім функцій, оголошених як void, повертають значення, немає необхідності використовувати всі ці значення. Типовим питанням по повертається функціями значенням є: «Чи не повинен я надати дане значення деякої змінної, оскільки значення повертається?» Відповідь: «Ні». Якщо не вказано, чому присвоюється значення, що повертається, то воно просто відкидається. Розглянемо наступну програму, яка використовує mul ():

int mul (int a, int b);

int mul (int a, int b)
return a * b;
>

Рядок 1 привласнює повертається функцією mul () значення змінної z. У рядку 2 повертається значення безпосередньо не використовується, але воно використовується побічно функцією printf (). Нарешті, в рядку 3 повертається значення втрачається, оскільки не відбувається присвоювання значення будь-якої змінної і також воно не використовується ні в якому з виразів.