previous next Up Title Contents Index

5.5 Osoittimista ja indekseistä

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öä.


previous next Up Title Contents Index