C gör omfattande användning av minne pekare för hantering arrayer , funktionsanrop , datastrukturer och mycket mer . Att veta hur man arbetar direkt med pekare är nyckeln till effektiva C kodning . Instruktioner Review, Skapa variabelminnet Pointer
1
Förstå att minnet pekarvariablerna alltid pekar på data av en viss typ . Till exempel är en pekare till en int skiljer sig från en pekare till en char . Dock kommer C inte hindra dig från att fritt blanda upp dem . Gör så bara om du är säker på att du vet vad du gör .
2
Skapa en variabel minne pekare genom att använda syntaxen du skulle använda för att skapa en variabel av önskad typ , men med en asterisk ( * ) före variabelnamnet , så här :
int * x ;
3 Tänk NULL . Pekare kan alltid vara NULL ( 0 ) , och detta används vanligtvis för att hänvisa till en pekare som inte ännu inte är inställt att peka var som helst.
Referens och dereference
4
Lär känna Referera . Referera
hänvisar till processen att hitta pekaren till en befintlig variabel . I C , är det referera operatören et-tecknet ( & ) . Till exempel : int color = 5 ; int * pointer_to_color , pointer_to_color = &color;
5 Utnyttja Dereferencing . Dereferencing
är processen att följa en pekare till dess värde , motsatsen till referenser . I C asterisk ( * ) används för dereferencing , enligt följande : printf ( " Färg är % d \\ n " , * pointer_to_color ) , /* utskrifter 5 * /
använder minne pekarvariablerna
6 Pass i en pekare till variabeln när du behöver en funktion för att kunna ändra en variabel , i stället för att passera variabelns värde . Detta låter funktion använder dereferencing att ändra värdet :
void convert_color_to_RGB ( int color , int * red , int * grön , int * blue ) { * röd = redpart ( färg ) , * Grön = greenpart ( färg ) ; * blå = bluepart ( färg ) ;} convert_color_to_RGB ( 15 , & myred , & mygreen , & MyBlue ) ,
7 arbete runt C: s gränser . När du vill skicka en array eller struktur i en funktion , måste du skicka en pekare i stället , eftersom C endast tillåter enstaka datatyper som ska skickas till funktioner :
int Delsumma ( int * tjog , int howmany ) { int totalt = 0 , i , for (i = 0 ; jag tillbaka totalt; }
8 Skapa en loop Eftersom strängar är faktiskt arrayer av tecken , kan du skapa en pekare till en karaktär att loopa igenom en sträng : . < pre > void replace_character ( char * s , röding från , röding till ) { char * cp , för ( cp = s , cp && * cp , cp + + ) if ( * cp == från ) * cp = till ; }
9
förstå hur C Visningar arrayer. arrayer hanteras av C som pekare , med pekararitmetik . C kommer automatiskt att föröka vad du lägger till en pekare av storleken på elementen den pekar på . det betyder
poäng [ 5 ] = 17 ; är exakt samma som * ( poäng + 5 ) = 17 ; . . Du kan använda pekare som en förkortning för array dereferences till exempel , * poäng = 17 , alltid hänvisar till 0: e elementet i arrayen .