Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Передача аргументів за значенням/вказівником/посиланням | Специфікація аргументів функції
Функції C++

Передача аргументів за значенням/вказівником/посиланням

Свайпніть щоб показати меню

Передача за значенням

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

main.cpp

main.cpp

1234567891011121314151617181920
#include <iostream> // Function that takes an argument by value void modify(int num) { // Modify the parameter (local copy of the argument) num = num * 2; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass 'number' by value modify(number); // Varibale in the main function remains unchanged std::cout << "After function call: " << number << std::endl; }

Передача за вказівником

Передача аргументів за значенням не завжди є ефективною. Копіювання значень використовує додаткову пам’ять, і іноді функції потрібно змінити оригінальну змінну безпосередньо. У таких випадках краще передавати змінну за вказівником, тобто надсилати її адресу в пам’яті замість значення. Це здійснюється за допомогою оператора вказівника (*) у параметрах функції.

main.cpp

main.cpp

1234567891011121314151617181920212223
#include <iostream> // Function that takes an argument using pointer void modify(int* p_num) { // Modify the value at the memory address pointed by `p_num` // '*' is used to extract the value from the address (pointer) *p_num = (*p_num) * 2; std::cout << "Inside function: " << *p_num << std::endl; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass the address of 'number' using a pointer // '&' is used to get an address of the variable modify(&number); // 'number' in the main function is modified through the pointer std::cout << "After function call: " << number << std::endl; }

Передача за посиланням

Передача за посиланням означає надання функції прямого доступу до пам’яті змінної, що дозволяє змінювати її початкове значення без використання оператора розіменування (*).

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

  • Не потрібно використовувати * для доступу до змінної всередині функції.
  • Не потрібно використовувати & при виклику функції, лише у її оголошенні.
main.cpp

main.cpp

1234567891011121314151617181920
#include <iostream> // Function that takes an argument by reference void modify(int& num) { // Modify the parameter directly (no need for dereferencing) num = num * 2; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass `number` by reference modify(number); // `number` in the main function is modified directly through the reference std::cout << "After function call: " << number << std::endl; }
question mark

Яке твердження найкраще описує різницю між передачею за значенням, вказівником і посиланням?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 2. Розділ 2
some-alt