Pekare är kraftfulla funktioner i C- och C ++ -programmering. Innan vi lär oss pekare, låt oss lära oss om adresser i C-programmering.
Adress i C
Om du har en variabel var i ditt program, &var
ger dig adressen i minnet.
Vi har använt adressen flera gånger när vi använder funktionen scanf()
.
Här lagras det värde som användaren anger i adressen till variabeln. Låt oss ta ett fungerande exempel.
Output
var: 5 address of var: 2686778
Obs! Du kommer förmodligen att få en annan adress när du kör ovanstående kod.
C Pekare
Pekare (pekvariabler) är speciella variabler som används för att lagra adresser snarare än värden.
Pekarsyntax
Så här kan vi deklarera pekare.
Här har vi deklarerat en pekare p av int
typ.
Du kan också deklarera pekare på dessa sätt.
Låt oss ta ett annat exempel på att deklarera pekare.
Här har vi förklarat en pekare p1 och en normal variabel p2.
Tilldela adresser till pekare
Låt oss ta ett exempel.
Här tilldelas 5 variabeln c. Och c-adressen tilldelas PC-pekaren.
Få värde av saken pekad av pekare
För att få värdet av det som pekarna pekar på använder vi *
operatör. Till exempel:
Här tilldelas PC-pekaren adressen till c
. För att få värdet lagrat i den adressen använde vi * pc.
Obs! I ovanstående exempel är pc en pekare, inte *pc
. Du kan inte och bör inte göra något som *pc = &c
;
Förresten kallas *
operatören för referens ( när du arbetar med pekare). Den fungerar på en pekare och ger värdet som är lagrat i den pekaren.
Ändring av värde som pekas av pekare
Låt oss ta ett exempel.
Vi har tilldelat pc-pekarens adress c.
Sedan ändrade vi värdet c till 1. Eftersom pc och adressen till c är samma, *pc
ger oss 1.
Låt oss ta ett annat exempel.
Vi har tilldelat pc-pekarens adress till c.
Sedan ändrade vi *pc
till 1 med *pc = 1;
. Eftersom pc och adressen för c är densamma, kommer c att vara lika med 1.
Låt oss ta ett exempel till.
Inledningsvis adressen till c tilldelas PC-pekaren med pc = &c;
. Eftersom c är 5, ger *pc
oss 5.
Därefter tilldelas d-adressen till PC-pekaren med pc = &d;
. Eftersom d är -15, ger *pc
oss -15 .
Exempel: Arbeta med pekare
Låt oss ta ett fungerande exempel.
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
Förklaring till programmet
-
int* pc, c;
Här , skapas en pekardator och en normal variabel c, båda av typenint
Eftersom pc och c initialt inte initialiseras pekar pekaren pc till antingen ingen adress eller en slumpmässig adress. Och variabel c har en adress men innehåller slumpmässigt skräpvärde. -
c = 22;
Detta tilldelar 22 variabeln c. 22 lagras i minnesplatsen för variabel c. -
pc = &c;
Detta tilldelar pekdatorns adress till variabel c. -
c = 11;
Detta tilldelar 11 variabel c. -
*pc = 2;
Detta ändrar värdet på minnesplatsen som pekaren pc pekar till 2.
Vanliga misstag när du arbetar med pekare
Antag att du vill att pekdator ska peka på adressen till c. Sedan,
Här är ett exempel på pekarsyntax nybörjare ofta förvirrande.
Varför fick vi inte ett fel när använder int *p = &c;
?
Det beror på att
motsvarar
I båda fallen skapar vi en pekare p
(inte *p
) och tilldela &c
till den.
För att undvika denna förvirring kan vi använda uttalandet så här:
Nu vet du vad pekare är, du lär dig hur pekare är relaterade till matriser i nästa handledning.