The C og C + + programmeringsspråk er to av få som fortsatt avhengige av indirekte memory access . Dette er konseptet at en minnevariabel kan holde plasseringen av en annen minnevariabel - og kjennemerket er kjent som en peker . Selv om dette høres forvirrende , er det et kraftig verktøy som brukes til å implementere arrays, lenkede lister , trær og andre datastrukturer . Her er en kort introduksjon til pekere og arrays . Du trenger
C + + språk, for eksempel Visual C + + Express , Visual studio eller C + + Builder
Vis flere instruksjoner
en
Opprett en ny C + + program . Ved hjelp av Visual Studio 2010 Windows konsoll applikasjon mal, vil koden starter som dette : en
# include " stdafx.h "
int _tmain ( int argc , _TCHAR * argv [ ] )
{
Angi resterende koden inn i programmet slik det vises i hele fortellingen nedenfor.
2
Opprette og skrive ut en ny tegnstreng pekeren som følger.
< p> char * c = "Hei ";
printf ( "% s \\ n" , c ) ;
asterisk (* ) før den variable c angir at dette er en peker variabel . Variabel c inneholder minneplassen tekststrengen 'Hei' var lagret av kompilatoren . Printf funksjonen bruker pekeren c for å lokalisere denne strengen og vise dem til konsollen .
3
Legg til en ny rekke heltall inn i minnet .
Int * n = new int [ 5 ];
en ny pekeren n er erklært å peke til et heltall array. Den nye funksjonen oppretter en ny rekke fem heltall og plasseringen av denne matrisen er lagret i pekeren p .
4
Legg array med tallene 1 til 5 ved hjelp av en annen pekeren skal flytte seg gjennom . rekke
int * p = n;
int jeg,
for (i = 1; i < 6 ; i + + )
{ * p = i;
p + +;
}
pekeren p er erklært og satt til samme verdi som n , begynnelsen av tabellen. Som sløyfen gjentas fem ganger , den minneposisjon peker til p med verdien av telleren , og pekeren er økes , beveger seg til det neste element i matrisen . Merk at p + + uttalelse trinn pekeren p av størrelsen på heltall , flytte til hver celle i matrisen .
5
vise verdiene i matrisen til konsollen ved hjelp av en indeks i tabellen.
for (i = 0 ; i < 5; i + + )
{ printf ( "% d \\ n" , n [ i] ) ;
}
< p> Igjen , looper programmet fem ganger, hver gang du bruker printf -funksjonen for å sende innholdet i minneplasser påpekt av n [ i] til konsollen . Denne gangen programmet bruker indeksen notasjon sammen med pekeren for å flytte gjennom matrisen. I C + + , arrays er null -basert, slik at motangrep 0-4
6
Avslutt programmet
slett n; . .
Return 0 ;
}
Fjern rekken fra minnet ved hjelp av slette funksjonen . I C + + , må noen minne tildelt av ny slettes for å unngå minnelekkasjer . Endelig tilbake 0 for å indikere at programmet er fullført .