Ukazatele v jazyce C se snadno a zábavně učí. Některé úkoly programování v jazyce C se snadněji provádějí pomocí ukazatelů a jiné úkoly, například dynamické přidělování paměti, nelze provádět bez použití ukazatelů. Je tedy nutné naučit se ukazatele, aby se z vás stal dokonalý programátor jazyka C. Pojďme se je začít učit jednoduchými a snadnými kroky.
Jak víte, každá proměnná je paměťovým místem a každé paměťové místo má definovanou adresu, ke které lze přistupovat pomocí ampersandu (&) operátor, který označuje adresu v paměti. Zvažte následující příklad, který vytiskne adresu definovaných proměnných –
Když je výše uvedený kód kompilován a spuštěn, vytvoří následující result –
Address of var1 variable: bff5a400Address of var2 variable: bff5a3f6
Co jsou ukazatele?
Ukazatel je proměnná, jejíž hodnotou je adresa jiné proměnné, tj. přímá adresa jako je každá proměnná nebo konstanta, musíte deklarovat ukazatel, než jej použijete k uložení adresy proměnné. Obecná forma deklarace proměnné ukazatele je –
type *var-name;
Zde je typ základní typ ukazatele; musí to být platný datový typ C. var-name je název proměnné ukazatele. Hvězdička * použitá k deklaraci ukazatele je stejná hvězdička použitá pro násobení. V tomto prohlášení se však hvězdička používá k označení proměnné jako ukazatele. Prohlédněte si některá z platných deklarací ukazatelů –
int *ip; /* pointer to an integer */double *dp; /* pointer to a double */float *fp; /* pointer to a float */char *ch /* pointer to a character */
Skutečný datový typ hodnoty všech ukazatelů, ať už celých, floatových, znakových nebo jiných , je stejné, dlouhé šestnáctkové číslo, které představuje adresu paměti. Jediným rozdílem mezi ukazateli různých datových typů je datový typ proměnné nebo konstanty, na kterou ukazatel ukazuje.
Jak používat ukazatele?
Existuje několik důležitých operací, což budeme pomocí ukazatelů dělat velmi často. (a) Definujeme ukazatel proměnné, (b) přiřadíme adresu proměnné ukazateli a (c) konečně přistupujeme k hodnotě na adrese dostupné v proměnné ukazatele. To se provádí pomocí unárního operátoru *, který vrací hodnotu proměnné umístěné na adrese určené jeho operandem. Následující příklad využívá tyto operace –
Když je výše uvedený kód kompilován a spuštěn, vytvoří následující výsledek –
Address of var variable: bffd8b3cAddress stored in ip variable: bffd8b3cValue of *ip variable: 20
Ukazatele NULL
Je vždy dobrým zvykem přiřadit hodnotu NULL proměnné ukazatele, pokud nemáte přesnou adresu, která má být přiřazena. To se děje v době deklarace proměnné. Ukazatel, kterému je přiřazena NULL, se nazývá nulový ukazatel.
Ukazatel NULL je konstanta s hodnotou nula definovanou v několika standardních knihovnách. Zvažte následující program –
#include <stdio.h>int main () { int *ptr = NULL; printf("The value of ptr is : %x\n", ptr ); return 0;}
Když je výše uvedený kód zkompilován a spuštěn, vytvoří následující výsledek –
The value of ptr is 0
Ve většině operačních systémů nemají programy povolen přístup k paměti na adrese 0, protože tato paměť je vyhrazena operačním systémem. Paměťová adresa 0 má však zvláštní význam; signalizuje, že ukazatel není určen k tomu, aby ukazoval na přístupné místo v paměti. Ale podle konvence, pokud ukazatel obsahuje hodnotu null (nula), předpokládá se, že neodkazuje na nic.
Chcete-li zkontrolovat nulový ukazatel, můžete použít následující příkaz „if“ –
if(ptr) /* succeeds if p is not null */if(!ptr) /* succeeds if p is null */
Podrobně ukazatele
Ukazatele mají mnoho, ale snadných konceptů a jsou velmi důležité pro programování v jazyce C. Následující důležité koncepty ukazatelů by měly být jasné každému programátorovi jazyka C –
číslo sest. | Koncept & Popis |
---|---|
1 | Aritmetika ukazatele
V ukazatelích lze použít čtyři aritmetické operátory: ++, -, +, – |
2 | Pole ukazatelů
Můžete definovat pole, která pojmou řadu ukazatelů. |
3 | Ukazatel na ukazatel
C vám umožňuje mít ukazatel na ukazateli a tak dále. |
4 | Předávání ukazatelů na funkce v C
Předávání argument podle odkazu nebo podle adresy umožňuje změnit předaný argument ve volající funkci volanou funkcí. |
5 | návrat ukazatel z funkcí v C
C umožňuje funkci vrátit ukazatel na místní proměnnou, statickou proměnnou a také dynamicky přidělenou paměť. |