logo

Функції C++ – передача за посиланням

Існує кілька способів, якими дані (або змінні) можуть бути надіслані як аргумент функції. Двома поширеними є передача за значенням і передача за посиланням. Передача за посиланням дозволяє функції змінювати змінну без створення копії. Ми повинні оголосити посилальні змінні. Розташування пам’яті переданої змінної та параметра однакове. Таким чином, будь-яка зміна параметра також відображається на змінній у його батьківській функції. Ця стаття присвячена обговоренню того, як передавати змінні за посиланням у 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
C++ - функція обміну з використанням Pass-By-Reference

Пояснення:

  • Спочатку визначається прототип функції (необов’язково, якщо функція визначена перед основною).
  • Усередині основної функції значення двох змінних приймаються як вхідні дані від користувача.
  • Значення перед викликом функції 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 менше початкового значення.