Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

13.1.3 Viittaaminen osoittimella

Taulukoihin voidaan viitata myös osoittimen avulla:

c-taul\kuut.c - esimerkki osoittimista taulukkoon

	  int *tammikuu,*helmikuu,*joulukuu; 
	...
	  tammikuu  = k_pituudet;
	  helmikuu  = tammikuu+1;
	  joulukuu  = k_pituudet+11;
	  *tammikuu = 31;
	  *helmikuu = 28;
	  *joulukuu = 31;
	
	helmikuu  -----+ 
	tammikuu  --+  |
	            |  |                joulukuu ---+  
	k_pituudet  |  |                            |
	  |         v  v                            v
	  |         0  1  2  3  4  5  6  7  8  9 10 11 
	  |       +-----------------------------------+ 
	  +------>|31|28| 0| 0| 0| 0| 0| 0| 0| 0| 0|31|
	          +-----------------------------------+

Taulukon nollaaminen voitaisiin hoitaa myös:

	  int i,*p;
	  for (i=0, p=k_pituudet; i<12; i++, p++) *p=0;
	/* tai */
	  for (i=0, p=k_pituudet; i<12; i++) *p++=0;
	/* tai */
	  for (p=k_pituudet; p<k_pituudet+12; p++) *p=0; 

Viimeistä esimerkkiä lukuun ottamatta näissä ei kuitenkaan ole järkeä, koska myös indeksi i tarvitaan joka tapauksessa. Viimeisenkin esimerkin mukaista käyttöä kannattaa harkita: se mitä tehdään, piiloutuu osoittimien taakse!


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys