*   >> läser Utbildning artiklar >> science >> programming

Principer för en enkel C ++ Sekvens Container

ntrollera om pekaren är NULL. Om det inte är NULL, fortsätter du att fylla listan med standardvärden. När du lägger till ett element i listan, kan du kontrollera om dynamiskt minne var . tillgänglig genom att kontrollera om NULL returnerades Det finns ett problem här. När du lägger till ett element med hjälp av hakparentes och array pekare som framgår ovan, pekaren inte ökas Du måste öka pekaren ett antal gånger tills det pekar till den extra element, innan du kan använda den för att kontrollera om det returnerade värdet är NULL. Följande kod visar detta för en int dynamisk array.

#include using namespace std; int main () {int * listPtr = new int [5]; listPtr [0] = 0; listPtr [1] = 1; listPtr [2] = 2; listPtr [3] = 3; listPtr [4] = 4; //lägga nytt element. listPtr [5] = 5; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; if (listPtr == NULL) {cout} --listPtr; --listPtr; --listPtr; --listPtr; --listPtr; återvända 0; } Du måste dekrementera pekaren, samma antal gånger som du inkrementerade det.

Om du inte dekrementera, index i hakparenteserna för pekaren kommer inte längre avspeglar deras avsedda (original) värde; enligt detta villkor, kommer pekaren med index inte tillbaka rätt värde. Läs ovanstående kod om du inte har gjort det (prova). Det finns fortfarande ett problem: Antag att den nya delen inte kunde läggas till eftersom dess pekare skulle peka på en minnesposition som redan har fattats av något annat föremål okänd för oss. I det fallet när du ökar pekaren antalet gånger skulle det fortfarande pekar på en adress som existerar, vilka inte är NULL.

I detta fall kommer if-check med NULL berättar att en adress finns men adressen inte skulle ha vår del (och dess värde). Detta är en felaktig slutsats. Ett bättre test är följande: if (* listPtr = 5!) {Cout} I if-villkoret, se om det returnerade värdet är vi avreferera pekaren till minnespositionen av den förmodade tillagda objektet och vi samma som värdet vi skickade för extra elementet. I programmet över värdet vi skickade var 5. Iterator En pekare är adressen till ett objekt i minnet.

Vi såg ett problem över att när du flyttar pekaren i matrisen (matris namn) före ett antal gånger, måste du flytta det bakom samma antal gånger, annars indexeringen kommer att gå fel. Så det är inte tillrådligt att flytta pekaren i matrisen. Du kan ha mer än en pekare som pekar på samma adress i minnet; det är du kan ha pekare av olika namn som pekar på samma adress. I ovanstående kod, ville vi adressen för den sis

Page   <<  [1] [2] [3] [4] >>
Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.