Pekare i C är lätta och roliga att lära sig. Vissa C-programmeringsuppgifter utförs lättare med pekare, och andra uppgifter, till exempel dynamisk minnestilldelning, kan inte utföras utan att använda pekare. Så det blir nödvändigt att lära sig pekare för att bli en perfekt C-programmerare. Låt oss börja lära oss dem i enkla och enkla steg.
Som ni vet är varje variabel en minnesplats och varje minnesplats har sin adress definierad som kan nås med ampersand (&) operatör, som anger en adress i minnet. Tänk på följande exempel, som skriver ut adressen till de definierade variablerna –
När ovanstående kod sammanställs och körs, producerar den följande resultat –
Address of var1 variable: bff5a400Address of var2 variable: bff5a3f6
Vad är pekare?
En pekare är en variabel vars värde är adressen till en annan variabel, dvs. direkt adress av minnesplatsen. Som en variabel eller konstant måste du deklarera en pekare innan du använder den för att lagra någon variabeladress. Den allmänna formen av en pekervariabeldeklaration är –
type *var-name;
Här är typen pekarens bastyp; det måste vara en giltig C-datatyp och var-name är namnet på pekervariabeln. Asterisken * som används för att deklarera en pekare är samma asterisk som används för multiplikation. I detta uttalande används dock asterisken för att beteckna en variabel som en pekare. Ta en titt på några av de giltiga pekardeklarationerna –
int *ip; /* pointer to an integer */double *dp; /* pointer to a double */float *fp; /* pointer to a float */char *ch /* pointer to a character */
Den faktiska datatypen för alla pekares värde, oavsett om det är heltal, flottör, tecken eller på annat sätt , är samma, ett långt hexadecimalt tal som representerar en minnesadress. Den enda skillnaden mellan pekare av olika datatyper är datatypen för variabeln eller konstanten som pekaren pekar på.
Hur man använder pekare?
Det finns några viktiga operationer, vilket vi kommer att göra med hjälp av pekare mycket ofta. (a) Vi definierar en pekervariabel, (b) tilldelar en variabelns adress till en pekare och (c) får slutligen tillgång till värdet vid den tillgängliga adressen i pekervariabeln. Detta görs genom att använda unary operator * som returnerar värdet på variabeln som ligger på den adress som anges av dess operand. I följande exempel används dessa operationer –
När ovanstående kod sammanställs och körs, ger den följande resultat –
Address of var variable: bffd8b3cAddress stored in ip variable: bffd8b3cValue of *ip variable: 20
NULL-pekare
Det är alltid bra att tilldela ett NULL-värde till en pekvariabel om du inte har en exakt adress som ska tilldelas. Detta görs vid tidpunkten för variabeldeklaration. En pekare som tilldelas NULL kallas en nullpekare.
NULL-pekaren är en konstant med ett värde på noll definierat i flera standardbibliotek. Tänk på följande program –
#include <stdio.h>int main () { int *ptr = NULL; printf("The value of ptr is : %x\n", ptr ); return 0;}
När koden ovan sammanställs och körs, ger den följande resultat –
The value of ptr is 0
I de flesta av operativsystemen är det inte tillåtet för program att komma åt minne på adress 0 eftersom minnet är reserverat av operativsystemet. Minnesadressen 0 har dock särskild betydelse; det signalerar att pekaren inte är avsedd att peka på en tillgänglig minnesplats. Men enligt konvention, om en pekare innehåller nollvärdet (noll) antas den peka på ingenting.
För att söka efter en nollpekare kan du använda ett ”if” -uttalande enligt följande –
if(ptr) /* succeeds if p is not null */if(!ptr) /* succeeds if p is null */
Pekare i detalj
Pekare har många men enkla begrepp och de är mycket viktiga för C-programmering. Följande viktiga pekarkoncept bör vara tydliga för alla C-programmerare –
Sr.Nr. | Koncept & Beskrivning |
---|---|
1 | Pekare-aritmetik
Det finns fyra aritmetiska operatorer som kan användas i pekare: ++, -, +, – |
2 | Array of pekare
Du kan definiera matriser för att innehålla ett antal pekare. |
3 | Pekare till pekare
C gör att du kan ha pekare på en pekare och så vidare. |
4 | Skicka pekare till funktioner i C
Skicka ett argument som referens eller adress möjliggör ändring av det skickade argumentet i den anropande funktionen av den anropade funktionen. |
5 | Return pekare från funktioner i C
C tillåter en funktion att också returnera en pekare till den lokala variabeln, den statiska variabeln och det dynamiskt tilldelade minnet. |