Predpogoj: Kazalci v C
Kazalec na kazalec v C se uporablja, ko želimo shraniti naslov drugega kazalca. Prvi kazalec se uporablja za shranjevanje naslova spremenljivke. In drugi kazalec se uporablja za shranjevanje naslova prvega kazalca. Zato so znani tudi kot dvojne točke . Kazalec na kazalec lahko uporabimo za spreminjanje vrednosti običajnih kazalcev ali ustvarjanje 2-D polja spremenljive velikosti. Dvojni kazalec zavzame enako količino prostora v pomnilniškem skladu kot običajni kazalec.
Deklaracija kazalca na kazalec v C
Deklaracija kazalca na kazalec je podobna deklaraciji kazalca v C. Razlika je v tem, da moramo pred ime kazalca postaviti dodaten '*'.
modem proti usmerjevalniku
data_type_of_pointer **name_of_variable = & normal_pointer_variable;>
int val = 5; int *ptr = &val; // storing address of val to pointer ptr. int **d_ptr = &ptr; // pointer to a pointer declared // which is pointing to an integer.>
Zgornji diagram prikazuje spominsko predstavitev kazalca na kazalec. Prvi kazalec ptr1 shrani naslov spremenljivke, drugi kazalec ptr2 pa naslov prvega kazalca.
Primer dvojnega kazalca v C
C
// C program to demonstrate pointer to pointer> #include> int> main()> {> >int> var = 789;> >// pointer for var> >int>* ptr2;> >// double pointer for ptr2> >int>** ptr1;> >// storing address of var in ptr2> >ptr2 = &var;> >// Storing address of ptr2 in ptr1> >ptr1 = &ptr2;> >// Displaying value of var using> >// both single and double pointers> >printf>(>'Value of var = %d
'>, var);> >printf>(>'Value of var using single pointer = %d
'>, *ptr2);> >printf>(>'Value of var using double pointer = %d
'>, **ptr1);> >return> 0;> }> |
>
>Izhod
Value of var = 789 Value of var using single pointer = 789 Value of var using double pointer = 789>
Kako deluje dvojni kazalec?
sklad v javi
Delovanje dvojnega kazalca je mogoče pojasniti z zgornjo sliko:
- Dvojni kazalec je deklariran z zgoraj prikazano sintakso.
- Po tem shranimo naslov drugega kazalca kot vrednost tega novega dvojnega kazalca.
- Zdaj, če želimo manipulirati ali dereferencirati katero koli od njegovih ravni, moramo uporabiti operator zvezdice ( * ), kolikokrat nižje od ravni, ki jo želimo iti.
Velikost kazalca na kazalec v C
V programskem jeziku C se dvojni kazalec obnaša podobno kot običajni kazalec v C. Torej je velikost spremenljivke dvojnega kazalca vedno enaka običajnim kazalcem. To lahko preverimo s spodnjim programom C.
Primer 1: Program C za iskanje velikosti kazalca na kazalec.
C
// C program to find the size of pointer to pointer> #include> int> main()> {> >// defining single and double pointers> >int> a = 5;> >int>* ptr = &a;> >int>** d_ptr = &ptr;> >// size of single pointer> >printf>(>' Size of normal Pointer: %d
'>,>sizeof>(ptr));> >// size of double pointer> >printf>(>' Size of Double Pointer: %d
'>,>sizeof>(d_ptr));> >return> 0;> }> |
>
>
zamenjaj niz v JaviIzhod
Size of normal Pointer: 8 Size of Double Pointer: 8>
Opomba: Izhod zgornje kode je odvisen tudi od vrste stroja, ki se uporablja. Velikost kazalca v programskem jeziku C ni fiksna in je odvisna od drugih dejavnikov, kot sta arhitektura procesorja in uporabljeni OS. Običajno je za 64-bitni operacijski sistem velikost 8 bajtov, za 32-bitni operacijski sistem pa 4 bajte.
Uporaba dvojnih kazalcev v C
Sledijo glavne uporabe kazalca na kazalec v C:
- Uporabljajo se pri dinamičnem dodeljevanju pomnilnika večdimenzionalnih nizov.
- Uporabljajo se lahko za shranjevanje večnivojskih podatkov, kot so odstavek besedilnega dokumenta, stavki in semantika besed.
- Uporabljajo se v podatkovnih strukturah za neposredno manipulacijo naslovov vozlišč brez kopiranja.
- Uporabljajo se lahko kot funkcijski argumenti za manipulacijo naslova, shranjenega v lokalnem kazalcu.
Večnivojski kazalci v C
Dvojni kazalci niso edini večnivojski kazalci, ki jih podpira jezik C. Kaj pa, če želimo spremeniti vrednost dvojnega kazalca?
V tem primeru lahko uporabimo trojni kazalec, ki bo kazalec na kazalec na kazalec, tj. int ***t_ptr.
Sintaksa trojnega kazalca
pointer_type *** pointer_name;>
Podobno lahko za spreminjanje vrednosti trojnega kazalca uporabimo kazalec na kazalec na kazalec na kazalec (Kazalec štirih ravni). Z drugimi besedami, lahko rečemo, da lahko za spremembo vrednosti spremenljivke nivo – x uporabimo kazalec nivo – x+1. In ta koncept je mogoče še razširiti.
Opomba : V C lahko uporabimo kateri koli kazalec ravni. Glede tega ni nobenih omejitev, vendar je zaradi tega program zelo zapleten in ranljiv za napake.
Morati prebrati - Kazalec funkcije v C