C-markører

Markører er effektive funktioner i C- og C ++ -programmering. Før vi lærer henvisninger, lad os lære om adresser i C-programmering.

Adresse i C

Hvis du har en variabel var i dit program, &var giver dig sin adresse i hukommelsen.

Vi har brugt adresse flere gange, mens vi bruger funktionen scanf().

Her gemmes den værdi, der er indtastet af brugeren, i adressen på variabel. Lad os tage et fungerende eksempel.

Output

var: 5 address of var: 2686778

Bemærk: Du får sandsynligvis en anden adresse, når du kører ovenstående kode.

C Markører

Markører (markørvariabler) er specielle variabler, der bruges til at gemme adresser i stedet for værdier.

Markørsyntaks

Sådan kan vi erklære markører.

Her har vi deklareret en pointer p af int type.

Dig kan også erklære markører på disse måder.

Lad os tage et andet eksempel på at erklære markører.

Her har vi deklareret en markør p1 og en normal variabel p2.

Tildeling af adresser til markører

Lad os tage et eksempel.

Her tildeles 5 variablen c. Og adressen til c tildeles pc-pointeren.

Få værdi af ting peget af pekere

For at få værdien af den ting, pegerne peger på, bruger vi * operatør. For eksempel:

Her tildeles adressen til c pc-markøren. For at hente værdien gemt i den adresse brugte vi * pc.

Bemærk: I ovenstående eksempel er pc en markør, ikke *pc. Du kan ikke og bør ikke gøre noget som *pc = &c;

Forresten kaldes * derferenceoperatøren ( når du arbejder med pegepinde). Den fungerer på en markør og giver den værdi, der er gemt i den pågældende markør.

Ændring af værdi peget af markører

Lad os tage et eksempel.

Vi har tildelt adressen til c til pc-markøren.

Derefter ændrede vi værdien c til 1. Da pc og adressen på c er det samme, *pc giver os 1.

Lad os tage et andet eksempel.

Vi har tildelt adressen til c til pc-markøren.

Derefter ændrede vi *pc til 1 ved hjælp af *pc = 1;. Da pc og adressen på c er den samme, vil c være lig med 1.

Lad os tage endnu et eksempel.

Indledningsvis adressen på c tildeles pc-markøren ved hjælp af pc = &c;. Da c er 5, giver *pc os 5.

Derefter tildeles d-adressen til pc-markøren ved hjælp af pc = &d;. Da d er -15, giver *pc os -15 .

Eksempel: Arbejde med markører

Lad os tage et arbejdseksempel.

Output

Address of c: 2686784Value of c: 22Address of pointer pc: 2686784Content of pointer pc: 22Address of pointer pc: 2686784Content of pointer pc: 11Address of c: 2686784Value of c: 2

Forklaring af programmet

  1. int* pc, c;

    Her , der oprettes en pointer pc og en normal variabel c, begge af typen int.
    Da pc og c ikke initialiseres oprindeligt, peger pcen på enten ingen adresse eller en tilfældig adresse. Og variabel c har en adresse, men indeholder tilfældig affaldsværdi.
  2. c = 22;

    Dette tildeler 22 til variablen c. Det vil sige, at 22 er gemt i hukommelsesplaceringen for variablen c.
  3. pc = &c;

    Dette tildeler adressen til variabel c til markøren pc.
  4. c = 11;

    Dette tildeler 11 til variabel c.
  5. *pc = 2;

    Dette ændrer værdien på hukommelsesplaceringen, som peger-pcen peger på 2.

Almindelige fejl, når du arbejder med pegepinde

Antag, du vil pointer-pc til peg på adressen på c. Så,

Her er et eksempel på markørsyntaks begyndere ofte forvirrende.

Hvorfor fik vi ikke en fejl, når ved hjælp af int *p = &c;?

Det er fordi

svarer til

I begge tilfælde opretter vi en markør p (ikke *p) og tildeler &c til den.

For at undgå denne forvirring kan vi bruge udsagnet således:

Nu ved du, hvad der er markører, du lærer hvordan pointer er relateret til arrays i den næste selvstudie.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *