Proměnná typu ukazatel
Adresa je hodnota stejně jako číslo, a proto ji můžete uložit do proměnné. Proměnné, ve které je uložená adresa, se říká ukazatel: ukazuje na jinou proměnnou, tedy říká, kde ta proměnná je.
int vek = 15;
int *p = &vek;Druhý řádek čtěte takto: „p je ukazatel na int a obsahuje adresu proměnné vek“. Říká se, že p ukazuje na vek. Hvězdička v deklaraci říká, že p je ukazatel, a int před ní určuje, jaká hodnota je v přihrádce, na kterou ukazuje.
Typ proměnné p je tedy int *, „ukazatel na int“. Ukazatel na double má typ double * a ukazatel na char typ char *. Krátký název p (podle anglického slova pro ukazatel) se v malých příkladech používá často. Mezery kolem hvězdičky jazyku C nevadí: int *p, int* p i int * p znamenají totéž. V tomto kurzu píšeme int *p.
I ukazatel je proměnná, takže má svou vlastní přihrádku se svou vlastní adresou. V jeho přihrádce ale není 15, nýbrž adresa proměnné vek. Když p vypíšete pomocí %p, dostanete stejné číslo jako u &vek:
#include <stdio.h>
int main(void) {
int vek = 15;
int *p = &vek;
printf("Adresa vek: %p\n", &vek);
printf("Hodnota p: %p\n", p);
return 0;
}Tento kód vypíše:
Adresa vek: 0xfffc
Hodnota p: 0xfffcČasté chyby:
int *p = vek;bez&skončí chybouincompatible integer to pointer conversion initializing 'int *' with an expression of type 'int'; take the address with &. Do ukazatele patří adresa, ne číslo jako 15. Konec hlášky vám dokonce radí, jak chybu opravit: vzít adresu pomocí&.- Typ ukazatele musí odpovídat typu proměnné. Po
double cena = 9.5;skončí řádekint *p = &cena;chybouincompatible pointer types initializing 'int *' with an expression of type 'double *'. Adresa proměnné typudoublepatří do ukazatele typudouble *.
Jak psát:
Pokyny
Pod proměnnou cena vytvořte ukazatel p typu int *, který ukazuje na proměnnou teplota.
Na konec programu (před return 0;) vypište hodnotu ukazatele p pomocí %p: text Hodnota p: a p. Je to stejná adresa jako na prvním řádku výpisu.
Pod ukazatel p vytvořte druhý ukazatel q, který ukazuje na proměnnou cena (q je v abecedě za p, a proto se tak druhý ukazatel často jmenuje). Jeho typ zvolte sami: jaký druh hodnoty je v proměnné cena? Pak na konec programu (před return 0;) vypište Hodnota q: a q.
Začněte programovat zdarma
2/11