Ukazatele C

Ukazatele jsou výkonné funkce programování v C a C ++. Než se naučíme ukazatele, pojďme se dozvědět více o adresách v programování C.

Adresa v C

Pokud máte ve svém programu proměnnou var, &var vám dá jeho adresu do paměti.

Adresu jsme použili mnohokrát při používání funkce scanf().

Zde je hodnota zadaná uživatelem uložena na adresu proměnné var. Pojďme si vzít funkční příklad.

Výstup

var: 5 address of var: 2686778

Poznámka: Při spuštění výše uvedeného kódu pravděpodobně dostanete jinou adresu.

C Ukazatele

Ukazatele (proměnné ukazatele) jsou speciální proměnné, které se používají k ukládání adres, nikoli hodnot.

Syntaxe ukazatele

Takto můžeme deklarovat ukazatele.

Zde jsme deklarovali ukazatel p typu int.

Vy může také deklarovat ukazatele tímto způsobem.

Pojďme si vzít další příklad deklarace ukazatelů.

Zde jsme deklarovali ukazatel p1 a normální proměnnou p2.

Přiřazení adres ukazatelům

Pojďme si vzít příklad.

Zde je 5 přiřazeno proměnné c. A adresa c je přiřazena ukazateli počítače.

Získat hodnotu věci, kterou ukazují ukazatele

Chcete-li získat hodnotu věci, na kterou ukazatele ukazují, použijeme * operátor. Například:

Zde je počítači přiřazena adresa c. K získání hodnoty uložené na této adrese jsme použili * pc.

Poznámka: Ve výše uvedeném příkladu je pc ukazatel, nikoli *pc. Nemůžete a neměli byste dělat něco jako *pc = &c;

Mimochodem, * se nazývá operátor dereference ( při práci s ukazateli). Funguje na ukazateli a udává hodnotu uloženou v tomto ukazateli.

Změna hodnoty ukazované ukazateli

Pojďme si vzít příklad.

Přiřadili jsme adresu c k ukazateli na pc.

Poté jsme změnili hodnotu c na 1. Protože pc a adresa c je stejné, *pc nám dává 1.

Pojďme si vzít další příklad.

Přiřadili jsme adresu c ukazateli na PC.

Poté jsme *pc změnili na 1 pomocí *pc = 1;. Protože pc a adresa c jsou stejné, bude c rovno 1.

Pojďme si vzít ještě jeden příklad.

Zpočátku adresa c je přiřazena ukazateli počítače pomocí pc = &c;. Protože c je 5, *pc nám dává 5.

Poté je adresa d přiřazena ukazateli počítače pomocí pc = &d;. Protože d je -15, *pc nám dává -15 .

Příklad: Práce s ukazateli

Pojďme si vzít funkční příklad.

Výstup

Address of c: 2686784Value of c: 22Address of pointer pc: 2686784Content of pointer pc: 22Address of pointer pc: 2686784Content of pointer pc: 11Address of c: 2686784Value of c: 2

Vysvětlení programu

  1. int* pc, c;

    zde , je vytvořen ukazatel pc a normální proměnná c, oba typu int.
    Protože pc a c nejsou původně inicializovány, ukazuje ukazatel pc buď na žádnou adresu, nebo náhodná adresa. Proměnná c má adresu, ale obsahuje náhodnou hodnotu smetí.
  2. c = 22;

    Tím se přiřadí 22 proměnné c. To znamená, že 22 je uloženo v paměti proměnné c.
  3. pc = &c;

    Tím se přiřadí adresa proměnné c ukazatelovému počítači.
  4. c = 11;

    Tím se přiřadí 11 proměnné c.
  5. *pc = 2;

    Tato změna hodnoty v místě paměti, na které ukazuje počítač ukazatele, na 2.

Časté chyby při práci s ukazateli

Předpokládejme, že chcete, aby počítač ukazatele přejděte na adresu c. Pak,

Zde je příklad začátečníků s syntaxí ukazatelů často matoucí.

Proč se nám nezobrazila chyba, když pomocí int *p = &c;?

Je to proto, že

je ekvivalentní

V obou případech vytváříme ukazatel p (ne *p) a přiřazení &c k tomu.

Abychom se vyhnuli této nejasnosti, můžeme použít následující příkaz:

Nyní víte, co jsou ukazatele, dozvíte se, jak ukazatele souvisejí s poli v dalším výukovém programu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *