русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Передача аргументів функцій як посилань


Дата додавання: 2014-04-22; переглядів: 954.


Функції С++ мають два обмеження: аргументи передаються як значення і втрачають зв’язок з початковими даними, функція може повертати тільки одне значення. Для подолання цих обмежень можна використовувати вказівники або посилання. Синтаксис використання вказівників відрізняється від синтаксису використання посилань, але результат буде однаковий – замість копії об’єкту програми, яка існує в області видимості функції, в функцію буде переданий реальний ісходний об’єкт.

 

#include <iostream>

using namespace std;

void swap1( int * a, int * b ) {

int t = *a;

*a = *b;

*b = t;

}

void swap2( int & a, int & b ) {

int t = a;

a = b;

b = t;

}

int main() {

int x = 3, y = 4;

swap1( &x, &y );

swap2( x, y );

}

 

Якщо в функцію необхідно передавати великий за розміром або складністю об’єкт, то витрати часу і пам'яті на створення його копії можуть бути значними. Тому передача в функцію посилання на такий об’єкт є більш ефективним. Якщо всередині функції об’єкт змінювати не треба, можна використовувати посилання на константні об’єкти.

 

#include <iostream>

using namespace std;

struct student {

int id;

int rating;

};

void show1( student s ) {

cout << s.id << " : " << s.rating << endl;

}

void show2( student * s ) {

cout << s->id << " : " << s->rating << endl;

}

void show3( student & s ) {

cout << s.id << " : " << s.rating << endl;

}

void show4( const student & s ) {

cout << s.id << " : " << s.rating << endl;

}

int main() {

student s = { 1, 95 };

show1( s );

show2( &s );

show3( s );

show4( s );

}

 

В функції 3 можна змінювати значення полей структури студент, і ці зміни будуть впливати на оригінал цієї структури. В функції 4 такі зміни заборонені.

 

 


<== попередня лекція | наступна лекція ==>
Посилання. Призначення посилань | Вступ. Загальний опис об’єктно-орієнтованого програмування


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн