Hvordan mestre C Pekere

Pekere er trolig den mest vanskelig begrep du vil møte i en begynnelse C-klasse. Forstå C pekere er mye lettere hvis du har en klar idé om hvordan datamaskiner lagrer informasjon - og en klar idé om hvordan adressene minnesteder forholder seg til data som er lagret i disse minnesteder. Dette er fordi pekere er alt om adresser. Forstå hvordan adressering fungerer gjør det lettere å forstå hvordan pekere arbeid.

Bruksanvisning

1 Lær først hvordan adresse, type og verdier arbeide sammen i datamaskinens minne. Hver variabel du bruker i C programmet vil ha en type og en adresse i minnet. Anta at X er et dobbeltord (typen) som tar opp hukommelsessteder 1000 og 1001. Adressen til X (skrevet og X) er 1000, men systemet vet at X er et dobbeltord, slik at verdien av X (skriftlig X) vil være i 1000 og 1001. X er navnet på en boks som for tiden har (for eksempel) 15, og dette kan endre seg. Adressen til X er 1000, og dette sannsynligvis ikke vil endre seg.

2 Lær hva det betyr når minneplasser inneholde adressene til andre minnesteder. Den C-kompilator vet når en variabel er en peker og hva slags elementer den peker til. For eksempel, "double

P;" er påstanden om at erklærer P for å være en peker. Dette betyr at symbolet P er forbundet med en minnelokasjon (si 2000), og at systemet vet at ting i stedet 2000 (pekere er bare ett ord lang) er adressene. Nå kan du si "P = & X;" og resultatene ville være å sette 1000 (adressen X) i datamaskinens minne plassering 2000. Hvis du nå evaluert P (hva P peker på), vil du få 15, fordi P peker på 15. P inneholder adressen til X, men den peker til innholdet i X.

3 Lær hver nye konseptet grundig før du går videre til neste. Hver ny bruk av pekere vil være "syntaktisk sukker" for å gjøre språket enklere å bruke. Hvis du har et klart begrep om hvordan adresser, typer og hukommelse fungerer sammen, har du solid fundament for å forstå syntaktisk sukker.

Hint

  • Hvis R er en gruppe i C-program, da R er egentlig en peker - R inneholder adressen til det første element i gruppen. R [0] er en måte å referere til det første element i matrisen, men * R virker også, og * R er slik at systemet vil alltid bruke.
  • Ikke glem om effekten av "type" når du gjør pekeren aritmetikk. * (R + 1) vil gi det andre elementet i gruppen, selv om matrisen inneholder kun dobbelt ord. Systemet vet at når du legger til et nummer til en peker, trenger du ikke alltid legge en - det avhenger av hvilken type ting pekeren peker til, og dette ble erklært å være en dobbel ord.