Przekazywanie argumentów przez odniesienie w funkcji C ++

Przekazywanie argumentów przez odniesienie w funkcji C ++

Funkcję można zdefiniować w kodzie z argumentem lub bez argumentu. Wartość argumentu może być przekazana przez wartość lub odniesienie do argumentu funkcji. Gdy wartość argumentu funkcji jest przekazywana przez odniesienie, zarówno zmienna argumentu, jak i zmienna, która przekazuje wartość przez odniesienie do tego argumentu, udostępnij tę samą lokalizację w pamięci.

Tak więc wartość zmiennej zostanie zmieniona, jeśli wartość zmiennej argumentu zostanie zmieniona w funkcji. Symbol „&” jest używany w argumencie funkcji do deklarowania argumentu przez odniesienie. W tym samouczku pokazano różne sposoby przekazywania argumentu przez odniesienie w funkcji C ++.

Przykład-1: Przekaż pojedynczy argument przez odniesienie

Sposób przekazania pojedynczego argumentu przez odniesienie do funkcji, pokazano w poniższym przykładzie. Tutaj wartość ciągu jest inicjowana w zmienną o nazwie strval. Ta zmienna przekazała jako argument wymienionej funkcji FunkcjonalneReference ().

Argument przez zmienną odniesienia o nazwie STR został użyty w argumencie funkcji. Wartość zmiennej odniesienia zostanie zmieniona po wywołaniu tej funkcji. Wartość Strval jest drukowana przed i po wywołaniu funkcji, aby sprawdzić, jak działa zmienna odniesienia.

// Dołącz niezbędną bibliotekę
#włączać
za pomocą przestrzeni nazw Std;
// zadeklaruj funkcję za pomocą wywołania przez argument referencyjny
void FunkctionByReference (String & Str)

// Zmodyfikuj wartość odniesienia
str = "lubię programowanie C ++";

int main ()

// zainicjuj zmienną string
String strval = "lubię programowanie";
// Wydrukuj wartość początkową zmiennej
Cout << "The value of strVal before calling the function:" << strVal << '\n';
// Funkcja wywołania ze zmienną ciągu
FunkctionByReference (Strval);
// Wydrukuj zmodyfikowaną wartość zmiennej
Cout << "The value of strVal after calling the function is:" << strVal << '\n';
powrót 0;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego kodu. Wartość Strval brzmiała „lubię programowanie” przed wywołaniem funkcji, a wartość tej zmiennej jest zmieniana na „Lubię programowanie C ++” po wywołaniu funkcji przekazania argumentu przez odniesienie.

Przykład-2: Zmodyfikuj zawartość zmiennej odniesienia na podstawie warunku

Poniższy przykład pokazuje sposób zmiany wartości zmiennej odniesienia na podstawie określonego warunku. Tutaj funkcja o nazwie calculateGrade () przyjmie pierwszy argument przez odniesienie i drugi argument według wartości.

Wartość pierwszego argumentu zostanie zmieniona na podstawie wartości przekazanej przez drugi argument. Dwie wartości zostaną pobrane od użytkownika i przekazane do funkcji, a zmodyfikowana wartość zmiennej przekazana przez odniesienie zostanie wydrukowana po wykonaniu kodu.

/// Dołącz niezbędną bibliotekę
#włączać
za pomocą przestrzeni nazw Std;
/*
Dokonaj funkcji wywołaniem przez argument referencyjny
oraz argument połączenia według wartości do obliczenia oceny
i zmodyfikuj zmienną odniesienia
*/
void CalculateGrade (String & Info, Inst Marks)

if (Marks> = 80)
info = info + "dostał+.";
inaczej if (Marks <80 && marks>= 75)
info = info + "dostał.";
inaczej if (Marks <75 && marks>= 70)
info = info + "dostał-.";
w przeciwnym razie
info = "Nie znaleziono informacji o ocenianiu.";

int main ()

Informacje o ciągu;
Znaki int;
// weź dane wejściowe od użytkownika
Cout << "Enter the student ID:" ;
CIN >> Informacje;
Cout << "Enter the obtained marks:" ;
CIN >> Marks;
// Funkcja wywołania z dwiema zmiennymi
Obliczgraduj (informacje, znaki);
// Wydrukuj zmodyfikowaną wartość zmiennej odniesienia
Cout << info << '\n';
powrót 0;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego kodu. Wyjście pokazuje, że wartość zmiennej odniesienia jest zmieniana z „784534” na „784534 ma a+” dla wartości Marka 84.

Przykład-3: Przekazywanie wielu argumentów przez odniesienie

Poniższy przykład pokazuje sposób przekazania wielu argumentów według wartości na funkcję i zmiany wartości tych argumentów na podstawie wartości innych argumentów. Trzy wejścia zostaną pobrane od użytkownika przed wywołaniem funkcji.

Tutaj zmienne bonusowe (%) i całkowite zostaną przekazane jako argumenty przez odniesienie, a dwie inne zmienne, wynagrodzenie i doświadczenie zostaną przekazane przez wartość do funkcji o nazwie CalculatesAlarywithbonus, kiedy zostanie wywołana. Funkcja zmodyfikuje wartości zmiennych bonusowych i całkowitych na podstawie innych zmiennych.

// Dołącz niezbędne biblioteki
#włączać
#włączać
za pomocą przestrzeni nazw Std;
// zadeklaruj funkcję za pomocą wywołania przez argument referencyjny
void CalculatesAlarywithbonus (int sal, int yr, float & bonus, podwójne i ogółem)

// Ustaw bonus na podstawie doświadczenia
if (rok> = 5)
Bonus = 0.10;
W przeciwnym razie if (yr> = 2)
Bonus = 0.07;
Total = sal + sal*bonus;

int main ()

// zadeklaruj niezbędne zmienne
Premia pływakowa = 0.05;
Podwójna całkowita = 0.0;
wynagrodzenie int, doświadczenie;
Nazwa ciągu;
// weź wejście od użytkownika
Cout << "Enter the employee name:" ;
getline (cin, nazwa);
Cout << "Enter the salary:" ;
CIN >> Wynagrodzenie;
Cout << "Enter the years of experience:" ;
CIN >> doświadczenie;
// wywołać funkcję, aby obliczyć wynagrodzenie na podstawie bonusu
Obliczanie działającego (wynagrodzenie, doświadczenie, bonus, ogółem);
// Wydrukuj szczegóły wynagrodzenia
Cout << "Salary information with bonus: \n";
Cout << "Name: " << name << "\n";
Cout << "Salary: " << salary << "\n";
Cout << "Experience: " << experience << "years" << "\n";
Cout << "Bonus(%): " << bonus << "\n";
Cout << "Salary with bonus: " << total << "\n";
powrót 0;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego kodu na podstawie danych wejściowych od użytkownika. Zgodnie z wyjściem 10 uznało się za wartość doświadczenia, która jest większa niż 5. Tak więc wartość premii została zmodyfikowana na 0.10 i wartość całkowitej została zliczona na podstawie bonusu.

Wniosek

Zastosowanie przekazania argumentu przez odniesienie do funkcji C ++ zostało wyjaśnione w tym samouczku przy użyciu różnych przykładów pomocy nowym koderom C ++ w prawidłowym użyciu tej funkcji w ich kodzie.