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ä lukuunottamatta 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!