logo

C – kazalec na kazalec (dvojni kazalec)

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 Javi
Izhod

 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