Існує кілька способів, якими дані (або змінні) можуть бути надіслані як аргумент функції. Двома поширеними є передача за значенням і передача за посиланням. Передача за посиланням дозволяє функції змінювати змінну без створення копії. Ми повинні оголосити посилальні змінні. Розташування пам’яті переданої змінної та параметра однакове. Таким чином, будь-яка зміна параметра також відображається на змінній у його батьківській функції. Ця стаття присвячена обговоренню того, як передавати змінні за посиланням у C++.
Що таке передача за посиланням?
Коли змінна передається як посилання на функцію, адреса змінної зберігається у змінній-вказівнику всередині функції. Отже, змінна всередині функції є псевдонімом переданої змінної. Таким чином, будь-які операції, виконані над змінною всередині функції, також будуть відображені у функції, що викликає.
- Ця здатність відображати зміни може повертати більше одного значення функцією.
- Крім того, функція void може технічно повертати значення за допомогою цього методу.
The & Оператор (адреса) позначає значення, передані у функції за допомогою посилання. Нижче наведено програму C++ для реалізації передавання за посиланням:
C++
підрядок java
// C++ program to implement> // pass-by-reference> #include> using> namespace> std;> > void> f(>int> & x)> {> >x--;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(a);> >cout << a << endl;> }> |
>
>Вихід
5 4>
Пояснення:
- По-перше, функція визначається з типом даних, що повертається, void і приймає значення за посиланням (як позначено & знак адреси у формальних параметрах).
- Функція зменшує значення свого формального параметра на 1.
- Після цього всередині функції main цілочисельна змінна з іменем a ініціалізується значенням 5.
- Значення «a» друкується на консолі. Викликається функція f(), а змінна передається як аргумент.
- Усередині функції значення змінної зменшується на 1.
- Після повернення з функції знову відображається значення змінної, яке виявилося на 1 менше початкового значення.
Отже, зміни змінної, переданої за допомогою посилання на функцію, відображаються у функції, що викликає.
Функція обміну за допомогою Pass-By-Reference
Функція swap міняє місцями значення двох змінних, які вона отримує як аргументи. Нижче наведено програму C++ для обміну значеннями двох змінних за допомогою передачі за посиланням.
C++
// C++ program to swap the values> // of two variables using> // pass-by-reference> #include> > // Prototype of the function> void> swap(>int> &,>int> &);> > // Driver code> int> main()> {> >int> x, y;> > >// Inputting two variables> >printf>(>'Enter the value of x and y
'>);> >scanf>(>'%d%d'>, &x, &y);> > >// Displaying their values before swapping> >printf>(>'Before Swapping
x = %d
y = %d
'>,> >x, y);> > >// Calling the function & sending variable> >// values as argument> >swap(x, y);> > >// Displaying their values after swapping> >printf>(>'After Swapping
x = %d
y = %d
'>,> >x, y);> >return> 0;> }> > // Function uses pass by reference method> // to swap passed variable values> void> swap(>int> &a,>int> &b)> {> >int> temp;> > >temp = b;> >b = a;> >a = temp;> }> |
>
>
Вихід:
обрізка рядка java
Пояснення:
- Спочатку визначається прототип функції (необов’язково, якщо функція визначена перед основною).
- Усередині основної функції значення двох змінних приймаються як вхідні дані від користувача.
- Значення перед викликом функції swap друкуються на консолі.
- Після цього значення передаються як аргумент функції обміну.
- Функція обміну використовує виклик за посиланням і містить код для заміни двох змінних.
- Після завершення функції значення двох змінних відображається в основній функції (після виклику swap).
- Поміняні значення відображаються на екрані.
Передача за посиланням з покажчиками
Також можна передати адресу змінної з викликаючої функції та використовувати її як вказівник у викликаній функції. Це дозволяє дещо чіткіше змінювати значення змінних у функції.
топологія мережі
Нижче наведено програму C++ для реалізації передачі за посиланням із покажчиками:
C++
// C++ program to implement> // pass-by-reference with> // pointers> #include> using> namespace> std;> > void> f(>int> *x)> {> >*x = *x - 1;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(&a);> >cout << a << endl;> }> |
>
>Вихід
5 4>
Пояснення:
- По-перше, функція визначається з типом даних, що повертається, void і приймає значення як покажчики (як позначено * зірочка знак у формальних параметрах).
- Функція зменшує значення свого формального параметра на 1.
- Після чого всередині основної функції цілочисельна змінна з назвою «a» ініціалізується значенням 5.
- Потім це значення відображається. Викликається функція, а адреса змінної передається як аргумент.
- Усередині функції значення змінної покажчика зменшується на 1.
- Після повернення з функції знову відображається значення змінної, яке виявилося на 1 менше початкового значення.