Osoitinmuuttujaa voitaisiin kuvitella myös seuraavasti: Olkoon meillä osoitekirja ( osoitteet) jossa on sivuja:
sivu 0: |
|
sivu 1: |
|
sivu 2: |
Kassinen Katto Katto 3452 |
|
Susi Sepe Takametsä - |
|
Ankka Aku Ankkalinna 1234 |
Meidän osoitekirjamme on tavallaan taulukko osoittimista (tässä tapauksessa osoitteita, älä sotke termejä!). Taulukon osoitteet paikassa 1 (sivu 1) on osoite " Sepe Sudelle ". Mitä tapahtuu mikäli kirjoitamme kokonaan uuden henkilön osoitteen sivulla 1 olevan osoitteen päälle (sijoitetaan uusi arvo osoitinmuuttujalle osoitteet[1])?
sivu 1: |
Batman Gotham City 999 |
Mitä tapahtuu " Sepe Sudelle "? Tuskinpa sijoitus osoitekirjassamme siirtää " Sepe Sutta " yhtään mihinkään " Perämetsästä", tai tekee edes häntä murheelliseksi! Tämä on eräs tyypillinen virhekäsitys osoitinmuuttujia käytettäessä. Osoitinmuuttujaan sijoittaminen ei muuta tietenkään itse tiedon sisältöä. Mutta sijoittaminen siihen paikkaan johon osoitinmuuttuja osoittaa (esimerkissämme " Sepe Suden " asuntoon) muuttaa tietenkin myös itse tiedon sisältöä.
// C++:lla sivu[1] = uusi_osoite; // ei vaikuta Sepe Suteen *sivu[1] = uusi_henkilo; // laittaa uuden henkilön Sepen osoitteeseen // = "tähdätään osoitetta pitkin"
Vastaavasti jos meillä on indeksimuuttuja nimeltä sivu, niin sijoitus muuttujalle
sivu=2
ei muuta mitenkään itse sivun sisältöä. Vasta sijoitus
osoitteet[sivu]=
muuttaisi sivun 2 sisältöä.