functions c with types examples
Типи функцій у C ++ разом із їх використанням.
У наших попередніх підручниках до цього часу ми бачили різні концепції в C ++, такі як змінні, класи зберігання, оператори, масиви, рядки тощо.
У цьому підручнику ми будемо рухатись далі та обговорюватимемо концепцію функцій. Функції також називаються методами, підпрограмами або процедурами.
=> Прочитайте тут обширну серію навчальних посібників для C ++.
Що ви дізнаєтесь:
- Як ми визначаємо функцію?
- Типи функцій на C ++
- Декларація про функції
- Визначення функції
- Виклик функції
- Формальні та фактичні параметри
- Повернені цінності
- Функції порожнечі
- Передача параметрів функціям
- Параметри за замовчуванням
- Параметри Const
- Вбудовані функції
- Використання структур у функціях
- Висновок
- Рекомендована література
Як ми визначаємо функцію?
Функція - це сукупність тверджень, які складаються разом для виконання певного завдання. Це можуть бути виписки, що виконують деякі повторювані завдання, або виписки, що виконують деякі спеціальні завдання, такі як друк тощо.
Одне з використання функцій - спростити код, розбивши його на менші одиниці, які називаються функціями. Ще одна ідея використання функцій полягає в тому, що це рятує нас від написання того самого коду знову і знову. Нам просто потрібно написати одну функцію, а потім викликати її як завгодно і коли потрібно, не писаючи той самий набір тверджень знову і знову.
Типи функцій на C ++
У C ++ ми маємо два типи функцій, як показано нижче.
Вбудовані функції
Вбудовані функції також називаються функціями бібліотеки. Це функції, які надаються на C ++, і нам не потрібно писати їх самостійно. Ми можемо безпосередньо використовувати ці функції в нашому коді.
тестування продуктивності веб-служб за допомогою loadrunner
Ці функції розміщуються у файлах заголовків на C ++. Наприклад ,, - це заголовки, які мають вбудовані математичні функції та рядкові функції відповідно.
Побачимо Приклад використання вбудованих функцій у програмі.
#include #include using namespace std; int main() { string name; cout << 'Enter the input string:'; getline (std::cin, name); cout << 'String entered: ' << name << '!
'; int size = name.size(); cout<<'Size of string : '< Вихід:
Введіть вхідний рядок: Довідка щодо тестування програмного забезпечення
Введено рядок: Довідка щодо тестування програмного забезпечення!
Розмір струни: 21
Тут ми використовуємо заголовки та. Типи даних та інші функції введення / виводу визначені в бібліотеці. Функції рядка, такі як getline, size - це частина заголовка.
Визначені користувачем функції
C ++ також дозволяє своїм користувачам визначати власні функції. Це визначені користувачем функції. Ми можемо визначити функції в будь-якому місці програми, а потім викликати ці функції з будь-якої частини коду. Як і змінні, їх слід оголосити перед використанням, функції також потрібно оголосити перед їх викликом.
Давайте детально обговоримо визначені користувачем функції.
Загальний синтаксис для визначених користувачем функцій (або просто функцій) наведено нижче:
return_type functionName(param1,param2,….param3) { Function body; }
Отже, як показано вище, кожна функція має:
- Тип повернення: Це значення, яке функції повертають до функції, що викликає, після виконання певного завдання.
- functionName : Ідентифікатор, що використовується для іменування функції.
- Список параметрів: Позначається param1, param2,… paramn у наведеному вище синтаксисі. Це аргументи, які передаються функції під час здійснення виклику функції. Список параметрів необов’язковий, тобто ми можемо мати функції, які не мають параметрів.
- Тіло функції: Група тверджень, що виконують конкретне завдання.
Як уже зазначалося, перед використанням нам потрібно «оголосити» функцію.
Декларація про функції
Оголошення функції повідомляє компілятору про тип повернення функції, кількість параметрів, що використовуються функцією, та її типи даних. Включаючи імена параметрів у функції, оголошення не є обов'язковим. Оголошення функції також називається прототипом функції.
Для вашої довідки ми навели кілька прикладів декларації функції нижче.
int sum(int, int);
Вгорі декларація має функцію 'сума', яка приймає два цілі числа як параметри і повертає ціле значення.
void swap(int, int);
Це означає, що функція підкачки приймає два параметри типу int і не повертає жодного значення, а отже, тип повернення є порожнім.
void display();
Відображення функції не приймає жодних параметрів, а також не повертає жодного типу.
Визначення функції
Визначення функції містить усе, що містить декларація функції, а також містить тіло функції, укладеної в дужки ({}).
Крім того, він також повинен мати названі параметри. Коли функція викликана, управління програмою переходить до визначення функції, щоб можна було виконати код функції. Коли виконання функції закінчено, елемент керування повертається до точки, де функцію викликали.
Для наведеного вище оголошення функції підкачки визначення наведено нижче:
void swap(int a, int b){ b = a + b; a = b - a; b = b - a; }
Зверніть увагу, що оголошення та визначення функції можуть поєднуватися. Якщо ми визначаємо функцію перед посиланням на неї, тоді немає необхідності в окремому оголошенні.
Візьмемо повний приклад програмування для демонстрації функції.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping: '; cout<<'a = '< Виклик функції Коли у нашій програмі є функція, тоді, залежно від вимоги, нам потрібно викликати або викликати цю функцію. Лише коли функцію викликають або викликають, функція виконує свій набір операторів, щоб забезпечити бажані результати.
Функцію можна викликати з будь-якої точки програми. Його можна викликати з основної функції або з будь-якої іншої функції, якщо програма використовує більше однієї функції. Функція, яка викликає іншу функцію, називається “Функція виклику”.
У наведеному вище прикладі заміни чисел функція підкачки викликається в основній функції. Отже, основною функцією стає виклична функція.
Формальні та фактичні параметри
Ми вже бачили, що ми можемо мати параметри функцій. Параметри функції наводяться у визначенні функції як список параметрів, що слідує за назвою функції. Коли функція викликана, ми повинні передавати фактичні значення цих параметрів, щоб, використовуючи ці фактичні значення, функція могла виконати своє завдання.
Викликаються параметри, визначені у визначенні функції Формальні параметри . Викликаються параметри у виклику функції, які є фактичними значеннями Фактичні параметри.
У наведеному вище прикладі заміни чисел ми написали коментарі для формальних та фактичних параметрів. У викличній функції, тобто main, значення двох цілих чисел зчитується і передається функції swap. Це фактичні параметри.
Визначення цих параметрів ми можемо побачити у першому рядку визначення функції. Це формальні параметри.
Зверніть увагу, що тип офіційних та фактичних аргументів повинен збігатися. Порядок офіційних та фактичних параметрів також повинен збігатися.
Повернені цінності
Після того, як функція виконає заплановане завдання, вона повинна повернути результат викликаючій функції. Для цього нам потрібен тип повернення функції. Функція може повернути одне значення для функції, що викликає. Тип повернення функції оголошується разом із прототипом функції.
Візьмемо приклад додавання двох чисел для демонстрації типів повернення.
#include using namespace std; int sum(int a, int b){ return (a+b); } int main() { int a, b, result; cout<>a>>b; result = sum(a,b); cout<<'
Sum of the two numbers : '< Вихід:
Введіть два числа, які слід додати: 11 11
Сума двох чисел: 22
У наведеному вище прикладі ми маємо суму функції, яка приймає два цілочисельні параметри і повертає цілий тип. У головній функції ми зчитуємо два цілі числа з вводу консолі та передаємо їх функції суми. Оскільки тип повернення є цілим числом, ми маємо результуючу змінну на LHS, а RHS - виклик функції.
Коли функція виконується, вираз (a + b), повернутий сумою функції, присвоюється змінній результату. Це показує, як використовується повернене значення функції.
Функції порожнечі
Ми бачили, що загальний синтаксис функції вимагає визначення типу повернення. Але якщо у випадку, якщо ми маємо таку функцію, яка не повертає жодного значення, то в такому випадку, що ми вказуємо як тип повернення? Відповідь полягає в тому, що ми використовуємо безцінний тип „void”, щоб вказати, що функція не повертає значення.
У такому випадку функція називається “void function”, і її прототип буде подібним
void functionName (param1, param2,… .param 3);
Примітка : Вважається доброю практикою включення заяви „повернення;” в кінці функції порожнечі для ясності.
Передача параметрів функціям
Ми вже бачили поняття фактичних та формальних параметрів. Ми також знаємо, що фактичні параметри передають значення функції, яка приймається параметрами формату. Це називається передачею параметрів.
У C ++ ми маємо певні способи передачі параметрів, як обговорюється нижче.
Передайте значення
У програмі для обміну двома цілими числами, про яку ми вже говорили раніше, ми побачили, що ми просто прочитали цілі числа 'a' і 'b' в основному і передали їх функції підкачки. Це техніка передачі значення.
У техніці передачі параметрів передачі за значенням копії значень фактичних параметрів передаються до формальних параметрів. Завдяки цьому фактичні та формальні параметри зберігаються в різних місцях пам'яті. Таким чином, зміни, внесені до формальних параметрів всередині функції, не відображаються поза функцією.
Ми можемо це зрозуміти краще, ще раз відвідавши обмін двох чисел.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping inside Swap:
'; cout<<'a = '< Передайте посилання Передати посилання - це ще одна техніка, що використовується C ++ для передачі параметрів функціям. У цій техніці замість передачі копій фактичних параметрів ми передаємо посилання на фактичні параметри.
Примітка: Посилання - це не що інше, як псевдоніми змінних або простими словами, це інша назва, яка присвоюється змінній. Отже, змінна та її посилання мають однакове місце в пам'яті. Ми детально вивчимо посилання у нашому наступному уроці.
У передачі за допомогою посилальної техніки ми використовуємо ці посилання на фактичні параметри, і як результат, зміни, внесені до формальних параметрів у функції, відображаються назад до функції, що викликає.
Ми модифікуємо нашу функцію підкачки, щоб наші читачі краще розуміли концепцію.
#include #include using namespace std; void swap(int &a, int &b){ int temp = a; a = b; b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Отже, зміни, внесені до формальних параметрів у функції підкачки, відображаються в основній функції, і ми отримуємо місця заміни.
Пройдіть повз вказівник
У C ++ ми також можемо передавати параметри функціонуванню за допомогою змінних покажчика. Техніка передачі вказівника дає ті самі результати, що й передача за посиланням. Це означає, що як формальний, так і фактичний параметри мають однакові місця в пам'яті, а зміни, внесені у функцію, відображаються у функції виклику.
Єдина відмінність полягає в тому, що при передачі за посиланням ми маємо справу із посиланнями або псевдонімами параметрів, тоді як у техніці передачі за покажчиком ми використовуємо змінні покажчика для передачі параметрів.
Змінні покажчика відрізняються від посилань, у яких змінні покажчика вказують на певну змінну, і на відміну від посилань, ми можемо змінити змінну, на яку вона вказує. Ми вивчимо деталі вказівника в наступних підручниках.
Ми знову представляємо обмін двох цілих чисел, щоб продемонструвати техніку передачі покажчика.
#include #include using namespace std; void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Параметри за замовчуванням У C ++ ми можемо вказати значення за замовчуванням для параметрів функції. У цьому випадку, коли ми викликаємо функцію, ми не вказуємо параметри. Натомість функція приймає параметри за замовчуванням, які вказані в прототипі.
Наступний приклад демонструє використання параметрів за замовчуванням.
#include #include using namespace std; int mathoperation(int a, int b = 3, int c = 2){ return ((a*b)/c); } int main() { int a,b,c; cout<>a>>b>>c; cout< Вихід:
Введіть значення для a, b та c: 10 4 6
Заклик до матоперації з 1 аргументом: 15
Заклик до матоперації з 2 аргументами: 20
Заклик до матоперації з 3 аргументами: 6
Як показано в прикладі коду, ми маємо функцію «mathoperation», яка бере три параметри, з яких ми вказали значення за замовчуванням для двох параметрів. Тоді в головній функції ми тричі викликаємо цю функцію з іншим списком аргументів.
Перший дзвінок має лише один аргумент. У цьому випадку інші два аргументи матимуть значення за замовчуванням. Наступний дзвінок - із двома аргументами. У цьому випадку третій аргумент матиме значення за замовчуванням. Третій дзвінок складається з трьох аргументів. У цьому випадку, оскільки ми надали всі три аргументи, значення за замовчуванням будуть ігноруватися.
Зауважте, що, надаючи параметри за замовчуванням, ми завжди починаємо з самого правого параметра. Крім того, ми не можемо пропустити параметр між ними і надати значення за замовчуванням для наступного параметра.
А тепер перейдемо до кількох концепцій, пов’язаних із особливими функціями, важливих з точки зору програміста.
Параметри Const
Ми також можемо передавати постійні параметри функціям за допомогою ключового слова ‘const’. Коли параметр або посилання є const, його неможливо змінити всередині функції.
Зверніть увагу, що ми не можемо передати параметр const формальному параметру, що не є const. Але ми можемо передати параметр const та non-const формальному параметру const.
Так само ми можемо мати const return-type. У цьому випадку також тип повернення не може бути змінений.
Давайте побачимо Приклад коду, який використовує посилання const.
#include #include using namespace std; int addition(const int &a, const int &b){ return (a+b); } int main() { int a,b; cout<>a>>b; cout<<'a = '< Вихід:
Введіть два числа, які потрібно поміняти місцями: 22 33
a = 2 b = 33
Результат додавання: 55
У наведеній вище програмі ми маємо формальні параметри const. Зверніть увагу, що фактичні параметри - це звичайні неконстантні змінні, які ми успішно передали. Оскільки формальні параметри є const, ми не можемо змінювати їх усередині функції. Отже, ми просто виконуємо операцію додавання і повертаємо значення.
Якщо ми спробуємо змінити значення a або b усередині функції, то компілятор видасть помилку.
Вбудовані функції
Ми знаємо, що для здійснення виклику функції внутрішньо він включає компілятор, що зберігає стан програми у стеці перед передачею контролю функції.
Коли функція повертається, компілятор повинен повернути стан програми назад і продовжити з того місця, де вона залишила. Це створює накладні витрати. Отже, в C ++, коли у нас є функція, що складається з декількох операторів, існує можливість, яка дозволяє їй розширюватися вбудовано. Це робиться шляхом вбудованої функції.
Отже, вбудовані функції - це функції, які розширюються під час виконання, заощаджуючи зусилля для виклику функції та модифікації стека. Але навіть якщо ми робимо функцію як вбудовану, компілятор не гарантує, що вона буде розширена під час виконання. Іншими словами, від компілятора повністю залежить, зробити функцію вбудованою чи ні.
Деякі компілятори виявляють менші функції та розширюють їх вбудовано, навіть якщо вони не оголошені вбудованими.
Далі наведено приклад вбудованої функції.
inline int addition(const int &a,const int &b){ return (a+b); }
Як показано вище, перед визначенням функції ми ставимо ключове слово “inline”, щоб зробити функцію вбудованою.
Використання структур у функціях
Ми можемо передавати структурні змінні як параметри, щоб функціонувати так само, як ми передаємо звичайні змінні як параметри.
Це показано в наступному прикладі.
#include #include using namespace std; struct PersonInfo { int age; char name(50); double salary; }; void printStructInfo(PersonInfo p) { cout<<'PersonInfo Structure:'; cout<<'
Age:'< p.age; cout <> p.salary; printStructInfo(p); }
Вихід:
Введіть ім'я: Веданг
Введіть вік: 22
Введіть зарплату: 45000,00
Структура PersonInfo:
Вік: 22
Ім'я: Веданг
Зарплата: 45000

Як показано у наведеній вище програмі, ми передаємо структуру, щоб функціонувати так само, як інші змінні. Ми зчитуємо значення для членів структури зі стандартного вводу, а потім передаємо структуру функції, яка відображає структуру.
Висновок
Це все стосувалось основ функцій на C ++.
Докладніше про статичні функції в C ++ ми розглянемо у наступних уроках.
=> Ознайомтесь із Повною серією навчальних програм для C ++ тут.
Рекомендована література
- Функції Python
- Функції дати та часу в C ++ з прикладами
- Функції скрипта оболонки Unix із параметрами та поверненням
- Підручник з Python DateTime із прикладами
- Важливі функції LoadRunner, які використовуються у сценаріях VuGen із прикладами
- Функції рядка Python
- Підручник з основних функцій Python з практичними прикладами
- Функції друзів в C ++