Znaky & a *

Znaky & a * teď znáte každý ve dvou významech a začátečníkům se často pletou. Rozhoduje, kde stojí:

  • V deklaraci, tedy když vytváříte proměnnou nebo parametr, stojí hned za typem a jsou součástí typu. int& čtěte jako „reference na int“ a int* jako „ukazatel na int“.
  • Ve výrazu, tedy v kódu, který něco počítá, přiřazuje nebo vypisuje, stojí před názvem proměnné a něco s ní dělají.
&*
V deklaraci (za typem)int& r = x; reference: r je další jméno pro xint* p = &x; ukazatel: p obsahuje adresu proměnné typu int
Ve výrazu (před proměnnou)&x je adresa proměnné x*p je proměnná, na kterou p ukazuje

A když stojí * mezi dvěma hodnotami, jako v cena * 2, je to obyčejné násobení. Dvojité && znáte z podmínek, kde znamená „a zároveň“. V tomto příkladu najdete skoro všechny významy:

#include <iostream>

int main() {
    int x = 5;
    int& r = x;     // deklarace: r je reference na x
    int* p = &x;    // deklarace: p je ukazatel, výraz &x: adresa x
    *p = r * 2;     // výraz: *p je proměnná x, r je také x, * mezi nimi násobí
    std::cout << x << std::endl;
    return 0;
}

Tento kód vypíše:

10

Když se v nich spletete, překladač vám to obvykle řekne, a často najde několik chyb najednou. Opravujte je od první, jak jste zvyklí.

Pokyny

Program se nepřeloží: překladač najde chyby na řádcích 5, 6 a 9. Podle tabulky opravte znaky & a * tak, aby každý řádek dělal to, co říká jeho komentář. Program pak vypíše Skóre: 120.

Poslední řádek ale místo skóre vypíše adresu, třeba Přes ukazatel: 0xfff4. Opravte ho, aby přes ukazatel vypsal hodnotu: Přes ukazatel: 120.

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

6/10