logo

const Pointer v C

Konstantní ukazatele

Konstantní ukazatel v C nemůže změnit adresu proměnné, na kterou ukazuje, tj. adresa zůstane konstantní. Můžeme tedy říci, že pokud konstantní ukazatel ukazuje na nějakou proměnnou, nemůže ukazovat na žádnou jinou proměnnou.

Syntaxe konstantního ukazatele

 *const ; 

Deklarace konstantního ukazatele je uvedena níže:

 int *const ptr; 

Pojďme pochopit konstantní ukazatel na příkladu.

 #include int main() { int a=1; int b=2; int *const ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

Ve výše uvedeném kódu:

  • Deklarujeme dvě proměnné, tj. a a b s hodnotami 1 a 2.
  • Deklarujeme konstantní ukazatel.
  • Nejprve přiřadíme adresu proměnné 'a' ukazateli 'ptr'.
  • Poté přiřadíme adresu proměnné 'b' ukazateli 'ptr'.
  • Nakonec se pokusíme vytisknout hodnotu proměnné, na kterou ukazuje 'ptr'.

Výstup

const Pointer v C

Ve výše uvedeném výstupu můžeme pozorovat, že výše uvedený kód vytváří chybu 'přiřazení proměnné pouze pro čtení 'ptr''. To znamená, že hodnotu proměnné 'ptr', kterou 'ptr' obsahuje, nelze změnit. Ve výše uvedeném kódu měníme hodnotu 'ptr' z &a na &b, což není možné s konstantními ukazateli. Můžeme tedy říci, že konstantní ukazatel, který ukazuje na nějakou proměnnou, nemůže ukazovat na jinou proměnnou.

Ukazatel na Constant

Ukazatel na konstantu je ukazatel, přes který nelze změnit hodnotu proměnné, na kterou ukazatel ukazuje. Adresu těchto ukazatelů lze změnit, ale nelze změnit hodnotu proměnné, na kterou ukazatel ukazuje.

očíslovat abecedu

Syntaxe ukazatele na konstantu

 const * 

Deklarace ukazatele na konstantu je uvedena níže:

 const int* ptr; 

Pojďme to pochopit na příkladu.

    Nejprve napíšeme kód, kde měníme hodnotu ukazatele
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%u',ptr); return 0; } 

Ve výše uvedeném kódu:

  • Deklarujeme dvě proměnné, tj. a a b s hodnotami 100 a 200.
  • Deklarujeme ukazatel na konstantu.
  • Nejprve přiřadíme adresu proměnné 'a' ukazateli 'ptr'.
  • Poté přiřadíme adresu proměnné 'b' ukazateli 'ptr'.
  • Nakonec se pokusíme vytisknout hodnotu 'ptr'.

Výstup

const Pointer v C

Výše uvedený kód běží úspěšně a ve výstupu zobrazuje hodnotu 'ptr'.

  • Nyní napíšeme kód, ve kterém měníme hodnotu proměnné, na kterou ukazuje ukazatel.
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&b; *ptr=300; printf('Value of ptr is :%d',*ptr); return 0; } 

Ve výše uvedeném kódu:

java mvc
  • Deklarujeme dvě proměnné, tj. 'a' a 'b' s hodnotami 100 a 200.
  • Deklarujeme ukazatel na konstantu.
  • Adresu proměnné 'b' přiřadíme ukazateli 'ptr'.
  • Poté se pokusíme upravit hodnotu proměnné 'b' pomocí ukazatele 'ptr'.
  • Nakonec se pokusíme vytisknout hodnotu proměnné, na kterou ukazuje ukazatel 'ptr'.

Výstup

const Pointer v C

Výše uvedený kód zobrazuje chybu 'přiřazení umístění pouze pro čtení '*ptr''. Tato chyba znamená, že nemůžeme změnit hodnotu proměnné, na kterou ukazuje ukazatel.

Konstantní ukazatel na konstantu

Konstantní ukazatel na konstantu je ukazatel, který je kombinací výše uvedených dvou ukazatelů. Nemůže změnit adresu proměnné, na kterou ukazuje, ani změnit hodnotu umístěnou na této adrese.

Syntax

 const * const ; 

Deklarace pro konstantní ukazatel na konstantu je uvedena níže:

 const int* const ptr; 

Pojďme to pochopit na příkladu.

 #include int main() { int a=10; int b=90; const int* const ptr=&a; *ptr=12; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

Ve výše uvedeném kódu:

  • Deklarujeme dvě proměnné, tj. 'a' a 'b' s hodnotami 10 a 90.
  • Deklarujeme konstantní ukazatel na konstantu a pak přiřadíme adresu 'a'.
  • Snažíme se změnit hodnotu proměnné 'a' přes ukazatel 'ptr'.
  • Poté se pokusíme přiřadit adresu proměnné 'b' k ukazateli 'ptr'.
  • Nakonec vypíšeme hodnotu proměnné, na kterou ukazuje ukazatel 'ptr'.

Výstup

const Pointer v C

Výše uvedený kód zobrazuje chybu 'přiřazení umístění pouze pro čtení '*ptr'' a 'přiřazení proměnné pouze pro čtení 'ptr''. Proto docházíme k závěru, že ukazatel konstanty na konstantu nemůže změnit ani adresu, ani hodnotu, na kterou tento ukazatel ukazuje.