Ukazatele v programování C: Co je to ukazatel, typy a příklady
Co je Ukazatel v C?
Ukazatel v C, je proměnná, která ukládá adresu jiné proměnné. Ukazatel lze také použít k odkazu na jinou funkci ukazatele. Ukazatel může být zvýšen / snížen, tj. Aby ukazoval na další / předchozí umístění paměti. Účelem ukazatele je ušetřit místo v paměti a dosáhnout rychlejšího času provádění.
Jak používat ukazatele v C
Pokud deklarujeme proměnnou v typu int, v ve skutečnosti uloží hodnotu.
v se nyní rovná nule.
Každá proměnná má však kromě hodnoty také svoji adresu (nebo jednoduše řečeno, kde se nachází v paměti). Adresu lze získat vložením ampersandu (&) před název proměnné.
Pokud na obrazovku vytisknete adresu proměnné, bude vypadat jako zcela náhodné číslo (navíc se může lišit od běhu k běhu).
Zkusme to v praxi s ukazatelem v C příklad
Výstup tohoto programu je -480613588.
Co je to ukazatel? Místo uložení hodnoty bude ukazatel ukládat adresu proměnné.
Proměnná ukazatele
Int * y = & v;
VARIABILNÍ |
POINTER |
Hodnota uložená na pojmenované adrese úložiště / paměti |
Proměnná, která ukazuje na adresu úložiště / paměti jiné proměnné |
Deklarace ukazatele
Stejně jako proměnné, ukazatele v C progra Před použitím ve vašem programu je třeba deklarovat mming. Ukazatele lze pojmenovat, kamkoli chcete, pokud se řídí pravidly pojmenování C. Deklarace ukazatele má následující podobu.
data_type * pointer_variable_name;
Zde,
- data_type je základní typ ukazatele typů proměnných C a označuje typ proměnné, na kterou ukazatel ukazuje.
- Hvězdička (*: používá se stejná hvězdička pro multiplikaci), což je operátor nesměrování, deklaruje ukazatel.
Podívejme se na některá platná deklarace ukazatele v tomto tutoriálu ukazatelů jazyka C:
Inicializovat ukazatel
Po deklaraci ukazatele jej inicializujeme jako standardní proměnné s adresou proměnné. Pokud ukazatele v programování C nejsou neinicializovány a použity v programu, výsledky jsou nepředvídatelné a potenciálně katastrofické.
K získání adresy proměnné používáme operátor ampersand (&), který je umístěn před názvem proměnné, jejíž adresu potřebujeme. Inicializace ukazatele se provádí s následující syntaxí.
Syntaxe ukazatele
pointer = &variable;
Níže je uveden jednoduchý program pro ilustraci ukazatele:
Výstup:
Address stored in a variable p is:60ff08Value stored in a variable p is:10
operátor | význam |
* | Slouží 2 účelům
|
& | Slouží pouze jednomu účelu
|
Typy ukazatelů v C
Následují různé typy ukazatelů v jazyce C:
Null Pointer
Null pointer můžeme vytvořit přiřazením hodnoty null během deklarace ukazatele. Tato metoda je užitečná, pokud ukazateli nemáte přiřazenou žádnou adresu. Nulový ukazatel vždy obsahuje hodnotu 0.
Následující program ilustruje použití nulového ukazatele:
#include <stdio.h>int main(){int *p = NULL; //null pointerprintf("The value inside variable p is:\n%x”,p);return 0;}
Výstup:
The value inside variable p is:0
Void Pointer
V programování C je ukazatel void také nazýván jako obecný ukazatel. Nemá žádný standardní datový typ. Ukazatel void je vytvořen pomocí klíčového slova void. Lze jej použít k uložení adresy jakékoli proměnné.
Následující program ilustruje použití ukazatele neplatnosti:
#include <stdio.h>int main(){void *p = NULL; //void pointerprintf("The size of pointer is:%d\n",sizeof(p));return 0;}
Výstup:
The size of pointer is:4
Divoký ukazatel
Ukazatel je považován za divoký ukazatel, pokud není na nic inicializován. Tyto typy ukazatelů C nejsou efektivní, protože mohou ukazovat na nějaké neznámé místo v paměti, což může způsobit problémy v našem programu a může to vést k havárii programu. Při práci s divokými ukazateli byste měli být vždy opatrní.
Následující program ilustruje použití divokého ukazatele:
#include <stdio.h>int main(){int *p; //wild pointerprintf("\n%d",*p);return