
Передача аргументів у функцію в C++
Передача аргументів у функцію в C++ індивідуальні уроки онлайн з програмування
1. Що таке аргументи у функції?
📌 Аргументи (параметри) — це значення, які ми передаємо у функцію.
Функція може використовувати ці значення у своєму коді.
Приклад:
#include <iostream>
using namespace std;
void greet(string name) {
cout << "Привіт, " << name << "!" << endl;
}
int main() {
greet("Анна"); // Виклик функції з аргументом "Анна"
greet("Олексій"); // Виклик функції з аргументом "Олексій"
return 0;
}
✅ Результат:
Привіт, Анна!
Привіт, Олексій!
📌 Функція greet()
приймає ім’я як аргумент і виводить вітання.
2. Передача аргументів за значенням
📌 Передача за значенням означає, що функція отримує копію аргументу.
Зміни всередині функції не впливають на оригінальну змінну.
Приклад:
#include <iostream>
using namespace std;
void increase(int num) {
num = num + 1; // Змінюємо значення змінної всередині функції
cout << "Всередині функції: " << num << endl;
}
int main() {
int a = 5;
increase(a); // Викликаємо функцію, передаємо a
cout << "Після виклику функції: " << a << endl;
return 0;
}
✅ Результат:
Всередині функції: 6
Після виклику функції: 5
📌 Значення a
не змінилося після виходу з функції, бо передавалася копія.
3. Передача аргументів за посиланням (&
)
📌 Передача за посиланням означає, що функція працює безпосередньо з оригінальною змінною.
Будь-які зміни всередині функції впливають на змінну в main()
.
Приклад:
#include <iostream>
using namespace std;
void increaseByRef(int &num) {
num = num + 1;
cout << "Всередині функції: " << num << endl;
}
int main() {
int a = 5;
increaseByRef(a); // Передаємо змінну за посиланням
cout << "Після виклику функції: " << a << endl;
return 0;
}
✅ Результат:
Всередині функції: 6
Після виклику функції: 6
📌 Тут a
змінило значення, бо передавалося не копія, а сама змінна.
4. Передача аргументів за вказівником (*
)
📌 Передача за вказівником схожа на передачу за посиланням, але працює через адресу пам’яті.
Приклад:
#include <iostream>
using namespace std;
void increaseByPointer(int *num) {
*num = *num + 1; // Використовуємо * для зміни значення за адресою
cout << "Всередині функції: " << *num << endl;
}
int main() {
int a = 5;
increaseByPointer(&a); // Передаємо адресу змінної
cout << "Після виклику функції: " << a << endl;
return 0;
}
✅ Результат:
Всередині функції: 6
Після виклику функції: 6
📌 Ми передали адресу змінної a
, тому її значення змінилося.
5. Коли яку передачу використовувати?
Вид передачі | Як працює | Коли використовувати |
---|---|---|
За значенням | Створюється копія змінної, зміни не впливають на оригінал | Якщо не треба змінювати аргумент |
За посиланням (& ) |
Передається сама змінна, зміни залишаються | Якщо треба змінити аргумент |
За вказівником (* ) |
Передається адреса змінної, працює схоже на посилання | Якщо треба працювати з пам’яттю |
6. Практичні завдання
Завдання 1:
Створи функцію square(int &x)
, яка приймає число за посиланням і зводить його в квадрат.
Завдання 2:
Напиши функцію swap(int &a, int &b)
, яка міняє два числа місцями.
Завдання 3:
Створи функцію doubleByPointer(int *x)
, яка подвоює число за вказівником.
📝 Підсумок
✅ Передача за значенням не змінює вихідну змінну.
✅ Передача за посиланням змінює вихідну змінну напряму.
✅ Передача за вказівником працює з адресами пам’яті.
🚀 Наступний урок: Масиви у функціях! Передача аргументів у функцію в C++ індивідуальні уроки онлайн з програмування