Předávání parametrů hodnotou a odkazem

V C++ máme dva základní způsoby, jak předat parametry funkci:

  1. Předání hodnotou (pass by value)
  2. Předání odkazem (pass by reference)

Při předání hodnotou se vytvoří kopie proměnné. Změny uvnitř funkce tedy neovlivní původní proměnnou. Toto jsme používali doposud:

void zmenCisloHodnotou(int cislo) {
    cislo = 42;  // Změní pouze lokální kopii
}

int x = 10;
zmenCisloHodnotou(x);
std::cout << x;  // Vypíše: 10 (x se nezměnilo)

Při předání odkazem funkce pracuje přímo s původní proměnnou. Změny uvnitř funkce tedy ovlivní původní proměnnou:

void zmenCisloOdkazem(int& cislo) {
    cislo = 42;  // Změní původní proměnnou
}

int x = 10;
zmenCisloOdkazem(x);
std::cout << x;  // Vypíše: 42 (x se změnilo)

Předání odkazem je užitečné když:

  • Chceme, aby funkce mohla změnit původní proměnnou
  • Chceme předat velké objekty bez vytváření kopie (efektivnější)

Pokud nechceme, aby funkce mohla měnit předanou proměnnou, ale chceme se vyhnout kopírování, můžeme použít konstantní odkaz (const&):

void vypisVektor(const std::vector& vektor) {
    // vektor nelze změnit, ale neprovede se jeho kopie
    for(int cislo : vektor) {
        std::cout << cislo << " ";
    }
}

Pokyny

Podívejte se na výstup programu. Proč se hodnota proměnné a nezměnila, ale hodnota b ano?

Upravte funkci zdvojnasob tak, aby také dokázala změnit původní hodnotu. Nápověda: Použijte ukazatel nebo referenci.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

2/5

Předávání parametrů hodnotou a odkazem | Start Coder