Den här sidan ingår i Fiskörn-nätverket


Pekare - C-Skola

Pekare är ett viktigt koncept inom C-programmering. Många uppfattar det i början som relativt krångligt och svårt, dock är konceptet i sig inte så svårt men i början kan felaktig användning leda till oväntade fel och buggar. Här kommer vi ge en grundläggande förklaring till pekare och relaterade ämnen. Konceptet med pekare kommer sedan följa med oss genom resten av C-skolan.

Vad är en pekare?

En pekare är en variabel som har en minnesadress som sitt värde. Notera här skillnaden mot en "vanlig" variabel där värdet var av den typ som angavs vid deklareringen. För att deklarera en pekare skrivs ett *-tecken framför variabelnamnet:

int *ptr; /*pekare som pekar på en int*/

Nu har vi deklarerat pekaren och datorn har allokerat så mycket minne som krävs för att lagra en minnesadress (inte en int). Vi har också sagt att den här pekaren pekar på en int. Just nu pekar inte pekaren mot något utan vi måste tilldela den ett värde. För att göra det använder vi en &-operatorn som ger oss minnesadressen för en variabel, se exemplet nedan:

int *ptr;
int n = 100;
ptr = &n; /*adressen av n lagras i ptr, ptr pekar nu på n*/

Notera här att ptr inte föregås av något *-tecken då vi tilldelar den sitt värde. Utan genom att använda *-operatorn så kan värdet som ligger i variabeln som pekaren pekar på kommas åt.

int *ptr;
int n = 100;
*ptr = 200; /*värdet av n ändras till 200, ptr ändras inte!*/

Det var grunden i hur pekare fungerar och används. Något som kan förvirra är & och * operatorerna och deras användning. Kom ihåg att & används för att få tillgång till en minnesadress och * används för att få tillgång till värdet lagrat vid en specifik minnesadress.




blog comments powered by Disqus
© 2006 - 2015 FiskörnKontaktAnvändarvillkor