С++ для начинающих



     Родохрозит по материалам redkiekamni.ru. |     

Передача аргументов - часть 2


#include <iostream>

void swap( int, int );

int main() {

    int i = 10;

    int j = 20;

    cout << "Перед swap():\ti: "

         << i << "\tj: " << j << endl;

    swap( i, j );

    cout << "После swap():\ti: "

         << i << "\tj: " << j << endl;

    return 0;

}

Результат выполнения программы:

Перед swap():    i: 10    j: 20

После swap():    i: 10    j: 20

Достичь желаемого можно двумя способами. Первый – объявление параметров указателями. Вот как будет выглядеть реализация swap() в этом случае:

// pswap() обменивает значения объектов,

// адресуемых указателями vl и v2

void pswap( int *vl, int *v2 ) {

    int tmp = *v2;

    *v2 = *vl;

    *vl = tmp;

}

Функция main() тоже нуждается в модификации. Вместо передачи самих объектов необходимо передавать их адреса:

pswap( &i, &j );

Теперь программа работает правильно:

Перед swap():    i: 10    j: 20

После swap():    i: 20    j: 10

Альтернативой может стать объявление параметров ссылками. В данном случае реализация swap() выглядит так:

// rswap() обменивает значения объектов,

// на которые ссылаются vl и v2

void rswap( int &vl, int &v2 ) {

    int tmp = v2;

    v2 = vl;

    vl = tmp;

}

Вызов этой функции из main() аналогичен вызову первоначальной функции swap():

rswap( i, j );

Выполнив программу main(), мы снова получим верный результат.




Содержание  Назад  Вперед