# include bruker namespace std; int main () {int * listPtr = new int [5]; listPtr [0] = 0; listPtr [1] = 1; listPtr [2] = 2; listPtr [3] = 3; listPtr [4] = 4; //legge nytt element. listPtr [5] = 5; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; if (listPtr == NULL) {cout} --listPtr; --listPtr; --listPtr; --listPtr; --listPtr; returnere 0; } Du må dekrementere pekeren, like mange ganger som du inkrementeres det.
Hvis du ikke minske, indeksen i hakeparentes for pekeren vil ikke lenger avspeiler de er tiltenkt (original) verdi; under den forutsetning, vil pekeren med indeksen ikke tilbake den riktige verdien. Les koden ovenfor hvis du ikke har gjort det (prøv det). Det er fortsatt et problem: Anta at det nye elementet ikke kan legges fordi pekeren vil peke på et minne posisjon som allerede har blitt tatt av en annen gjenstand ukjent for oss. I det tilfelle når man øke pekeren antall ganger ville det fortsatt peker til en adresse som eksisterer som ikke er NULL.
I dette tilfellet vil den hvis jekk med NULL forteller oss at en adresse finnes, men adressen ville ikke ha vår element (og dens verdi). Dette er en feil konklusjon. En bedre test er som følger: if (* listPtr = 5!) {Cout} I if-tilstand, se om den returnerte verdien er vi dereference pekeren til minne posisjonen den antatte lagt objekt og vi samme som verdien vi sendte for den ekstra element. I programmet over verdien vi sendte var 5. Iterator En peker er adressen til et objekt i minnet.
Vi så et problem over at når du beveger pekeren over matrise (matrise navn) den foran en rekke ganger, må du flytte den bak like mange ganger, ellers indeksering vil gå galt. Så det er ikke tilrådelig å flytte pekeren av tabellen. Du kan ha mer enn én pekeren peker til samme adresse i minnet; det er du kan ha pekere til forskjellige navn som peker til samme adresse. I koden ovenfor, ønsket vi adressen til den siste (nylig lagt til) element. For å løse problemet ovenfor (indeks problem), er det godt å ha