Minne i et program er delt inn i to deler: statisk og dynamisk. Statisk minne refererer til variabler av en fast størrelse i løpet av programmet, mens dynamisk minne tilpasser seg størrelsen på variabler som programmet trenger. For eksempel, hvis et program må lagre et variabelt antall strenger, vil dynamisk minne bli brukt. På C -språk, Doble pekere (**) brukes når du jobber med dynamisk minne.
Hva er en dobbel peker (**)?
EN Dobbeltpeker (**) er en peker som peker på plasseringen av en annen peker. Plasseringen av variabelen i minnet er indikert med denne tilleggspekeren. Som et resultat, når en Dobbeltpeker (**) tilordnes en variabel, opprettes to nivåer av minneadresse. Dette tillater C -språket å få tilgang til dynamisk minne lettere. På minnestabelen, a Dobbeltpeker (**) tar opp den samme mengden rom som en vanlig peker.
La oss se på syntaksen til en Dobbeltpeker (**):
data_type_of_pointer ** name_of_variable = & normal_pointer_variable;
La oss nå se på et eksempel på bruk Dobbeltpeker (**) I et C -program.
#inkludere
int main ()
int val = 36;
int* ptr1;
int ** ptr2;
Ptr1 = &val;
Ptr2 = &ptr1;
printf ("Verdien av val er: %d \ n", val);
printf ("Verdi av val ved bruk av enkeltpeker er: %d \ n", *ptr1);
printf ("Verdien av val ved bruk av dobbeltpeker er: %d \ n", ** ptr2);
retur 0;
Vi bruker variabelen “Val”Med verdien 36 i ovennevnte kode. Så peker vi en peker (PTR1) i retning av Val, som er rettet i retning av en andre peker (PTR2) etterpå. Men pekerne endrer ikke verdien av 'Val', som forblir 36.
Produksjon
Doble pekere (**) på C -programmeringsspråket oppfører seg identisk med vanlige pekere i C. Som et resultat, dobbeltpeker (**) Variables størrelse og den vanlige pekervariabelen er alltid identisk.
#inkludere
int main ()
int val = 36;
int* ptr1;
int ** ptr2;
Ptr1 = &val;
Ptr2 = &ptr1;
printf ("størrelse på normal peker: %d \ n", størrelse av (ptr1));
printf ("størrelse på dobbel peker: %d \ n", størrelse av (ptr2));
retur 0;
Vi bruker variabelen “Val”Med verdien 36 i denne koden. Så peker vi en peker (PTR1) i retning av Val, som er rettet i retning av en andre peker (PTR2) etterpå. Størrelsen på begge pekerne beregnes, som er identisk, Jeg.e. 8.
Produksjon
Hva gjør ** på C -språk?
Det er flere funksjoner av Doble pekere som er nevnt her:
1: Tilgang til dynamisk minne
Funksjonen til Doble pekere (**) er det som gjør at C -språket kan sette opp og få tilgang til dynamisk minne. For å gjøre dette, er en peker utstyrt med en adresse som samsvarer med det første elementet i en matrise. De Dobbeltpeker (**) peker deretter på denne pekeren, slik at dataene på dette stedet kan leses eller skrives. Når programmet kjører, kan flere elementer legges til i matrisen ved hjelp av en Dobbeltpeker (**).
2: Definer en pekerarray
En annen bruk for Doble pekere (**) er å definere en rekke pekere. Dette er nyttig når programmet må få tilgang til store datamengder uten å bekymre seg for størrelsen på matrisen. EN Dobbeltpeker (**) Kan raskt få tilgang til adressen til disse pekerne, slik at programmet kan behandle dataene uten problemer med å endre størrelsen på matrisen hver gang en verdi endres.
3: Tilgang til minneadresseplassering
På det mest grunnleggende nivået, Dobbeltpeker (**) Gir ganske enkelt programmereren tilgang til adressen til et gitt minneplassering. Med denne adressen kan programmereren deretter få tilgang til alle data som er lagret på det stedet, eller endre disse dataene etter behov. For å gjøre dette, er programmereren ganske enkelt Dobbeltpeker (**), som gjøres ved hjelp av stjerne (*) -tegnet. På grunn av Dobbeltpeker (**), Programmereren er nå i stand til å få tilgang til og endre data på måter som ikke var før mulig.
4: Lag komplekse datastrukturer
Videre, a Dobbeltpeker (**) Kan også brukes til å lage mer komplekse datastrukturer som trær og grafer. Noder, som kan peke på en eller flere ekstra noder og utgjøre en mer sofistikert struktur i trær og grafer. For å lage en så kompleks struktur, må programmereren igjen definere en Dobbeltpeker (**) som peker på nodene i datastrukturen. De Dobbeltpeker (**) lar programmereren få tilgang til og endre noder i strukturen på en måte som ikke ville være mulig uten Dobbeltpeker (**).
Konklusjon
Doble pekere (**) er en kraftig del av C -språket, slik at programmer kan jobbe med store datamengder og dynamisk minne. De gir adressen til et stykke data for enkel tilgang og opprettholder de to adressenivåene gjennom hele dataens passering. Ved å bruke Doble pekere (**), Et C -språkprogram kan raskt behandle store datamengder uten behov for å endre størrelsen på matrisen hver gang.