Kirjoitetaan taulukko-ohjelmasta <Esimerkki 1> versio, jossa taulukkoviittaukset tehdään pointtereiden avulla.
#include <stdio.h> #include <conio.h> #define KOKO 10 void tayta_taulukko(int *taulukko, int koko); void tulosta_taulukko(int *taulukko, int koko); void main (void) { int taulukko[KOKO]; clrscr(); printf ("Täytetään taulukko \n"); tayta_taulukko(taulukko,KOKO); clrscr(); printf ("Tässä taulukkosi: "); tulosta_taulukko(taulukko,KOKO); getch(); } void tayta_taulukko(int *taulukko, int koko) { int i; for(i=0; i<koko; i++) { printf ("Anna luku "); scanf ("%d",taulukko+i); } } void tulosta_taulukko(int *taulukko, int koko) { int i; for (i=0; i<koko; i++) { printf ("\n%d",*(taulukko+i)); } }
Huomaa, että scanf()-funktion kutsussa
scanf("%d", taulukko+i);
toisena parametrina on muuttujan (muistipaikan) osoite. &-merkkiä ei tällöin tarvita.
Vastaavasti printf()-funktion kutsussa
printf ("\n%d", *(taulukko+i));
parametrina on muuttujan (muistipaikan sisältämä) arvo. Tästä syystä osoitteen edessä on käytetty sisältöoperaattoria (*).