previous next Up Title Contents Index

Esimerkki 1

Kirjoitetaan täydellinen ohjelma, jossa havainnollistetaan funktiopointterin käyttöä:

    #include <stdio.h>
    int summa (int, int);
    void main(void)
    {
        int (*p)(int, int);
        int a,b,tulos;
        p=summa; // summa on summafunktion osoite
        printf ("Anna kaksi lukua");
        scanf ("%d %d",&a,&b);
        tulos =(*p)(a,b); // Kutsutaan p:n osoittamaa funktiota
	printf ("\nLukujen summa on %d", tulos);
    }
    int summa(int eka, int toka)
    {
        return eka+toka;
    }

Funktiota, johon p osoittaa voitaisiin kutsua myös seuraavasti:

    tulos = p(a,b);

Tässä kutsussa ei näy, että p on funktiopointteri. Se voisi periaatteessa olla myös funktio.

Epäselvyyksien välttämiseksi suositetaan käytettäväksi esimerkissä käytettyä funktion epäsuoraa osoitusta:

    tulos =(* p)(a,b); 

previous next Up Title Contents Index