Zdeňkovo poznámky

Co zjistím a opakovaně vyheldávám, tak sem zapíšu

Uživatelské nástroje

Nástroje pro tento web


programovani:ukazatele

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
programovani:ukazatele [2018/01/12 07:37] Zdeněk Havlíkprogramovani:ukazatele [2018/01/17 13:03] (aktuální) – [Ukazatelé a reference] Zdeněk Havlík
Řádek 1: Řádek 1:
-===== Ukazatelé =====+====== Ukazatelé a reference ====== 
 +Proč používat ukazatele? Proto => http://kmlinux.fjfi.cvut.cz/~fabiadav/cecko/poznamky-k-jazyku-c/ukazatele\\ 
 +\\ 
 +Ukazatel (anglicky pointer) je v informatice označení pro datový typ, který slouží k uložení adresy v paměti počítače. Ukazatel slouží pro zpřístupnění dat, která jsou na příslušné adrese v operační paměti uložena. Zdroj: [[https://cs.wikipedia.org/wiki/Ukazatel_(programov%C3%A1n%C3%AD)|Wiki]] 
 +===== Ukazatel (pointer) =====
 deklarce proměnné deklarce proměnné
 <code cpp> <code cpp>
 char promenna; char promenna;
 +char dalsi_promenna;
 </code> </code>
-deklarace ukazatele+deklarace ukazatele - *
 <code cpp> <code cpp>
-char *ukazatel;+char *ukazatel; // vznikne místo v paměni pro uložení odkazu na nějakou proměnnou typu char
 </code> </code>
 +operátor reference - &
 +<code cpp>
 +ukazatel = &promenna; // přiřazení adresy v paměni na proměnou pomocí & (ampersand)
 +</code>
 +operace dereference - *
 +<code cpp>
 +dalsi_promenna = *ukazatel;
 +</code>
 +==== Příklad ====
 +<file cpp ukazatel.cpp>
 +#include <iostream>
 +using namespace std;
 +
 +int *ukazatel, promenna, dalsi_promenna;
 +
 +int main ()
 +{
 +   promenna = 2018; // přiřazení hodnoty do promenné
 +   ukazatel = &promenna; // uložení adresy paměti na proměnnou 'promenna'
 +   dalsi_promenna = *ukazatel; // do jiné proměnné uložení HODNOTY přes ukazatel
 +   cout << dalsi_promenna;
 +   
 +   int i; // definice proměnné i datového typu int
 +   int a[3]; // definice proměnné a, pole typu int se třemi prvky
 +   int *p; // definice proměnné p, ukazatele na datový typ int
 +   p = &i; // hodnota pointeru je nastavena na adresu proměnné i
 +   *p = 3; // do paměti na adresu odkazovanou ukazatelem p se uloží hodnota 3
 +   p = &(a[2]); // hodnota pointeru je nastavena na prvek pole a s indexem 2
 +   p = p - 2; // hodnota pointeru je nastavena na prvek pole a s indexem 0 (tj. první prvek pole)
 +   *p = 5; // do paměti na adresu odkazovanou p se uloží hodnota 5 (tedy první prvek pole má tuto hodnotu)
 +
 +    return 0;
 +
 +</file>
 +==== Praktický příklad ====
 +Zdroj: https://www.itnetwork.cz/cplusplus/cecko/dynamicka-prace-s-pameti/tutorial-jazyk-c-ukazatele
 +<code cpp ukazatel_priklad.cpp>
 +void prohod(int *p_a, int *p_b)
 +{
 +    int pomocna = *p_a;
 +    *p_a = *p_b;
 +    *p_b = pomocna;
 +}
 +
 +int main(int argc, char** argv) {
 +    int cislo1 = 15;
 +    int cislo2 = 8;
 +    prohod(&cislo1, &cislo2);
 +    printf("V a je číslo %d a v b je číslo %d.", cislo1, cislo2);
 +    return (EXIT_SUCCESS);
 +}
 +</code>
 +
programovani/ukazatele.1515742648.txt.gz · Poslední úprava: 2018/01/12 07:37 autor: Zdeněk Havlík

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki