Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

5.5 Osoittimista ja indekseistä

Osoitinmuuttujaa voitaisiin kuvitella myös seuraavasti: Olkoon meillä osoitekirja ( osoitteet) jossa on sivuja:

sivut osoittimina

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 sivu[1])?

yksi sivu

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"
	// Javalla
	sivu[1] = uusi_osoite;    // ei vaikuta Sepe Suteen
	sivu[1].setNimi("Batman") // tämän lähemmäksi Javalla ei pääse

Vastaavasti jos meillä on indeksimuuttuja nimeltä snro, niin sijoitus muuttujalle

	snro=2 

ei muuta mitenkään itse sivun sisältöä. Vasta sijoitus

	sivu[snro]= 

muuttaisi sivun 2 sisältöä.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys