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: Wiki
deklarce proměnné
char promenna; char dalsi_promenna;
deklarace ukazatele - *
char *ukazatel; // vznikne místo v paměni pro uložení odkazu na nějakou proměnnou typu char
operátor reference - &
ukazatel = &promenna; // přiřazení adresy v paměni na proměnou pomocí & (ampersand)
operace dereference - *
dalsi_promenna = *ukazatel;
#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; }
Zdroj: https://www.itnetwork.cz/cplusplus/cecko/dynamicka-prace-s-pameti/tutorial-jazyk-c-ukazatele
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); }