Yshopnoosa.com

Vad är en pekare i C?

En av de funktioner som gör C sådan en kraftfull programmeringsspråk är möjligheten för programmerare att komma åt minnet direkt med hjälp av pekare. Pekare används i stor utsträckning i C för hantering av matriser med data, manipulera strängar, skicka parametrar till funktioner och skapa länkade listor och andra komplexa datastrukturer. Pekare är en av de största källorna till förvirring för programmerare nya till C-språket. Förstå och använda pekare är avgörande för effektiv C programmering.

Vad är en pekare i C?

Pekaren pekaren: var noga med för att städa upp!

Funktion

Ett objekt pekaren, eller helt enkelt pekaren, är en variabel som innehåller en minnesadress där ett objekt, exempelvis en struct eller float eller en array med objekt, lagras. Med den minnesadressen, kan programmeraren läsa, ändra och flytta genom minnet med hjälp av en pekare.

Fördelar

Funktioner som tar en pekare till ett externt objekt passerade i som en parameter kan ändra objektet. När funktionen avslutas, finns det nya värdet som tilldelats objektet kvar. En funktion kan ta flera visare, att låta en enda funktion att ändra flera objekt med en enda funktion samtal.

En pekare kan användas för att navigera genom en mängd element systematiskt eller slumpmässigt med array notation, iteration eller matematik. Via pekare för array åtkomst är snabbare än de mer komplicerade implementeringarna av liknande funktioner finns i andra språk. Även sådana implementeringar är ofta enklare att använda och förebygga fel, finns det ytterligare omkostnader som påverkar prestanda.

Betydelse

Förmågan till dynamiskt allokera godtyckliga mängder av heap-minne under körning är en teknik som kallas "dynamisk minnesallokering." Många tidigare språk, som Fortran, krävs mängden minne som har allokerats för strukturer som matriser för att ställas in vid kompileringen, och mängden minne som har allokerats kan inte ändras under körningen av programmet. Pekare används i C för att hålla adress dynamiskt allokerade minnet.

Användning

En pekare förklaras genom att placera en stjärna (*) mellan den typnamnet och variabelnamnet.

Värdet på ett objekt i minnet på adress innehas av pekaren nås genom "avrefereringen" pekaren. Avrefereringen en pekare görs genom att sätta en stjärna (*) framför namnet pekaren.

Vid hantering av pekare till structs, medlem av strukt refereras med en pil (->) mellan pekaren namnet och medlemsnamnet.

Adressen till ett objekt kan nås genom att placera ett et-tecken (&) före objektets variabelnamnet. Passerar ett objekts adress till en funktion som kallas "passera genom hänvisning." Parametern är deklarerad som en pekare i funktionen prototypen. Funktionen avrefererar parametern om du vill ändra dess värde, och värdet kommer att finnas kvar när funktionen avslutas.

Arrayer är skapad av fördelning av minne som krävs för att hålla önskat antal objekt av ett visst slag. Detta sker under eller efter deklarationen med pekaren notation och malloc eller calloc, eller under deklarationen med array-notation. Delar av en matris kan nås med index referens notation eller genom iteration array pekaren. Iteration automatiskt steg eller minskar adressen av storleken på ett enskilt element så pekaren är rätt placerad i början av det nästa eller föregående elementet.

Varning

Minnesallokering och deallocation sköts av programmeraren. Minne som har allokerats måste frigöras när det inte längre behövs. Att frigöra minne inte förhindrar den från att användas tills programmet avslutas. "Minnesläcka" inträffar när en referens till allokerat minne försvinner utan frigöra minnet först. Minnesläckor som kan hända när en pekare är eller som en funktion utgångar utan delegera ägarskap av allokerat minne.

Åtkomst till minne utöver slutet av allokerat minne är ett vanligt fel när du arbetar med arrayer. Detta fel kallas med ett "array index out of bounds." Detta kan medföra att programmet beter sig felaktigt eller avslutas oväntat.