*   >> lukeminen koulutus Artikkelit >> science >> programming

Periaatteet Yksinkertainen C ++ Sequence Container

os NULL palautettiin. On ongelma: Kun lisäät elementin avulla hakasulkeissa ja joukko osoitin katsottuna edellä, osoitin ei kasvatetaan. Sinun täytyy kasvattaa osoitin useita kertoja, kunnes se osoittaa on lisätty alkuaine, ennen kuin voit käyttää sitä tarkistaa, jos palautettu arvo on NULL. seuraava koodi kuvaa tätä varten int dynaaminen array. # include using namespace std; int main () {int * listPtr = uusi int [5]; listPtr [0] = 0; listPtr [1] = 1; listPtr [2] = 2; listPtr [3] = 3; listPtr [4] = 4; //Lisätään uusi elementti.

listPtr [5] = 5; ++ ListPtr; ++ ListPtr; ++ ListPtr; ++ ListPtr; ++ ListPtr; jos (listPtr == NULL) {cout} --listPtr; --listPtr; --listPtr; --listPtr; --listPtr; palata 0; } Sinulla dekrementoidaan osoitin, yhtä monta kertaa, että olet kasvatetaan sitä. Jos et dekrementoidaan, indeksi hakasulkeissa varten osoitin ei enää vastaa niiden tarkoitettu (alkuperäinen) arvo; nojalla tämän edellytyksen, osoitin indeksi ei palauta oikeaa arvoa. Lue edellä koodi, jos et ole tehnyt niin (kokeile).

On edelleen ongelma: Oletetaan, että uusi elementti ei voitu lisätä, koska sen osoitin osoittaisi muistin asema jo ottanut jonkin muun esineen meille tuntemattomia. Siinä tapauksessa, kun increment osoitin monta kertaa se olisi silti viittaavat osoite, joka on olemassa, joka ei ole nolla. Tässä tapauksessa, jos tarkistus NULL kertoo meille, että osoite on olemassa, mutta osoite ei olisi meidän elementti (ja sen arvo). Tämä on väärä johtopäätös.

Parempi testi on seuraava: jos (* listPtr! = 5) {cout} IF-ehto, me epäviittausongelman osoittimen muistiin paikan oletettu lisätty objekti ja näemme, jos palautettu arvo on sama kuin arvo lähetimme lisätty alkuaine. Ohjelmaan yläpuolella arvo lähetimme oli 5. Iterator osoitin on osoite kohteen muistiin. Näimme ongelma edellä, että kun siirrät osoittimen array (array nimi) edessä monta kertaa, sinun täytyy siirtää sen takana yhtä monta kertaa, muuten indeksointi menee pieleen. Joten se ei ole suositeltavaa liikuttaa osoitinta array.

Sinulla voi olla enemmän kuin yksi osoitin osoittaa samaan osoitteeseen muistissa; että on voit olla osoittimet eri nimiä osoittaa samaan osoitteeseen. Edellä mainituissa koodi, halusimme osoite viimeinen (lisätyt) elementti. Voit ratkaista edellä mainittu ongelma (indeksi ongelma), se on hyvä olla osoitin eri nimi, joka skannaa kohde voit saada osoite etsit. Tämä osoite voidaan palauttaa tai tallentaa jonnekin esine (tunniste). Näin osoitin array (array nimi) ei muuta kantaansa ja in

Page   <<  [1] [2] [3] [4] >>
Copyright © 2008 - 2016 lukeminen koulutus Artikkelit,https://koulutus.nmjjxx.com All rights reserved.