previous next Up Title Contents Index

Esim 2

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 (*).

previous next Up Title Contents Index