Pekare i C-programmering med exempel
En pekare är en variabel som lagrar adressen till en annan variabel. Till skillnad från andra variabler som innehåller värden av en viss typ, håller pekaren adressen till en variabel. Till exempel innehåller en heltalsvariabel (eller du kan säga lagrar) ett heltal, men en heltalspekare innehåller adressen för en heltalsvariabel. I den här guiden kommer vi att diskutera pekare i C-programmering med hjälp av exempel.
Innan vi diskuterar pekare i C, kan vi ta ett enkelt exempel för att förstå vad vi menar med adressen till en variabel.
Ett enkelt exempel för att förstå hur man får tillgång till adressen till en variabel utan pekare?
I det här programmet har vi ett variabelnummer av int-typ. Värdet på num är 10 och detta värde måste sparas någonstans i minnet, eller hur? Ett minnesutrymme tilldelas för varje variabel som innehåller värdet på variabeln, detta minnesutrymme har en adress. Vi bor till exempel i ett hus och vårt hus har en adress som hjälper andra människor att hitta vårt hus. På samma sätt som variabelns värde lagras i en minnesadress, vilket hjälper C-programmet att hitta det värdet när det behövs.
Så låt oss säga att adressen som tilldelats variabeln num är 0x7fff5694dc58
, vilket betyder vilket värde som vi skulle tilldela num ska lagras på platsen: 0x7fff5694dc58
. Se diagrammet nedan.
Utgång:
Value of variable num is: 10Address of variable num is: 0x7fff5694dc58
Ett enkelt exempel på pekare i C
Detta program visar hur en pekare deklareras och används. Det finns flera andra saker som vi kan göra med pekare, vi har diskuterat dem senare i den här guiden. För närvarande behöver vi bara veta hur man länkar en pekare till adressen till en variabel.
Viktigt att notera är: Datatypen för pekaren och variabeln måste matcha, en intpekare kan innehålla adressen till int-variabeln, på samma sätt kan en pekare som deklarerats med flytdatatyp innehålla adressen till en flytvariabel. I exemplet nedan är pekaren och variabeln båda av int-typ.
Output:
Address of variable num is: 0x7fff5694dc58
C-pekare – Operatörer som används med pekare
Låt oss diskutera operatorerna & och * som används med pekare i C.
”Adress till” (&) Operatör
Vi har redan sett i det första exemplet att vi kan visa adressen till en variabel med ampersand Jag har använt & num för att komma åt adressen till variabeln num. Operatorn & är också känd som ”Adress till” operatören.
printf("Address of var is: %p", &num);
Observera:% p är en formatspecifikator som används för att visa adressen i hex-format.
Nu när du vet hur du får adressen till en variabel men hur lagrar jag adressen i någon annan variabel? Det är där pekare kommer in i bilden. Som nämnts i början av den här guiden används pekare i C-programmering för att hålla adressen till en annan variabel.
Pekaren är precis som en annan variabel, huvudskillnaden är att den lagrar adressen till en annan variabel snarare än ett värde.
”Värde vid adress” (*) Operatör
* Operatören är också känd som Value at address operator.
Hur man deklarerar en pekare ?
Ovanstående är några exempel på pekardeklarationer. Om du behöver en pekare för att lagra adressen till heltalsvariabeln ska pekarens datatyp vara int. Samma fall är med de andra datatyperna.
Genom att använda * -operatören kan vi komma åt värdet på en variabel genom en pekare.
Till exempel:
double a = 10;double *p;p = &a;
* p skulle ge oss värdet på variabeln a. Följande påstående skulle visa 10 som utdata.
printf("%d", *p);
På samma sätt om vi tilldelar ett värde till * pekaren så här:
*p = 200;
Det skulle ändra värdet på v ariabel a. Uttalningen ovan kommer att ändra värdet på a från 10 till 200.
Exempel på pekare som visar användningen av & och *
Output :
Value of variable var is: 10Value of variable var is: 10Address of variable var is: 0x7fff5ed98c4cAddress of variable var is: 0x7fff5ed98c4cAddress of pointer p is: 0x7fff5ed98c50
Låt oss ta några fler exempel för att förstå det bättre –
Låt oss säga att vi har en char-variabel ch och en pekare ptr som innehåller adressen till ch.
char ch="a";char *ptr;
Läs värdet på ch
printf("Value of ch: %c", ch);orprintf("Value of ch: %c", *ptr);
Ändra värdet på ch
ch = "b";or*ptr = "b";
Ovanstående kod ersätter värdet a med b .
Kan du gissa resultatet av följande C-program?
Output:
Address of var is: 0x7fff5d027c58Address of var is: 0x7fff5d027c58Value of var is: 10Value of var is: 10Value of var is: 10Value of pointer p is: 0x7fff5d027c58Address of pointer p is: 0x7fff5d027c50
Fler ämnen på pekare
1) Pekare till pekare – En pekare kan peka på en annan pekare (vilket innebär att den kan lagra adressen till en annan pekare), sådana pekare kallas dubbelpekare ELLER pekare till pekare.
2) Vidarebefordra pekare till funktion – Pekare kan också skickas som ett argument till en funktion, med hjälp av denna funktion kan en funktion anropas genom referens såväl som en matris kan skickas till en funktion medan du ringer.
3) Funktionspekare – En funktionspekare är precis som en annan pekare, den används för att lagra adressen till en funktion. Funktionspekaren kan också användas för att anropa en funktion i C-programmet.