Avnotering av operatør


Den deferanseoperasjon eller indirekte operatør er en ensartet operatør (dvs. med en enkelt operand) som finnes i språk som inneholder pekere , for eksempel C og C ++ , hvor den er betegnet med symbolet *( stjerne ). Det krever en peker for operand og returnerer verdien som er lagret på adressen i pekeren. Dette er grunnen til at vi sier at vi "derefererer" pekeren.

For eksempel følgende C-kode:

int x = 21; int *p; // * est utilisée pour la déclaration: // p est un pointeur sur un entier, // *p est un entier p = &x; // & renvoie l'adresse de x // maintenant *p == 21, puisque p == &x et que *p == x *p = 42; // équivaut à écrire x = 42, car p == &x // donc *p == 42 et x == 42 car p est un pointeur qui contient l'adresse de x, // modifier *p revient à modifier x

tilordne 42 til variabelen xved hjelp av dereference-operatoren og en peker til variabelen x.

Sammensetning

Den unary operatoren *, som definert i C og C ++ , kan brukes i flere peker- tilfeller , der flere dereferanser er nødvendige. Pekere kan selvfølgelig referere til andre pekere, og i slike tilfeller er det nødvendig med flere bruksområder for dereference-operatøren.

Argumentet argv av den funksjon hånd C (og C ++) , som er gitt i prototypen skjema char **argv, er et enkelt eksempel på multiple peker. Navnet på den kjørbare filen for det kalte programmet, samt eventuelle påfølgende kommandolinjeargumenter, lagres som uavhengige strenger. En rekke pekere som charinneholder pekere til det første tegnet i hver av disse strengene, og denne pekeren blir sendt til funksjonen mainsom et argument argv. Variabelen argver faktisk en peker til en peker til char, og representerer en rekke pekere til char. Den andre parameteren for funksjonen main,, argcer en som intrepresenterer størrelsen på matrisen (det vil si antall pekere opp chartil NULL- pekeren , som avgrenser matrisen med pekere).

Annen syntaks

I C er adressen til en struktur (eller en union) sangitt med &s. Operatørens adresse &er den omvendte av dereferensoperatøren *, så *&stilsvarer s. Adressen til en struktur (eller fagforening) skan tilordnes en peker p :

p = &s; // l'adresse de s a été assignée à p; p == &s; // *p == s

Verdien av et medlem aav en struktur ser notert s.a. Tenk på pekeren ptil s(dvs. p == &s), s.aer ekvivalent med (*p).a, så vel som syntaksen p->asom er et syntaktisk sukker for å få tilgang til medlemmer av en struktur (eller union) via en peker:

p = &s; // p == &s; // s.a == (*p).a // s.a == p->a // (*p).a == p->a

Operatøren ->kan lenkes. For eksempel, i en koblet liste, kan vi referere til n->next->nextneste sekund node (forutsatt at n->nextdet ikke er NULL ).

Se også