![]() | Funktiopointtereita voidaan hyödyntää valikkopohjaisissa käyttöliittymissä. |
Seuraavassa ohjelmassa on päävalikko, josta käyttäjä voi valita yhden neljästä
vaihtoehdosta.
Kukin vaihtoehto johtaa tietyn funktion suorittamiseen. Funktioihin siirrytään
osoitetaulukon avulla.
#include <stdio.h> #include <conio.h>
/* FUNKTIOIDEN PROTOTYYPIT *********/
int valikko (void); void summa(void); void erotus(void); void tulo(void); void lopetus(void);
/* FUNKTIOIDEN OSOITETAULUKKO */
void (*funktiot[4])(void)={lopetus,summa,erotus,tulo};
/* PÄÄOHJELMA ***********************/
void main (void) { int valinta; do{ valinta = valikko(); (*(funktiot[valinta]))(); }while (valinta != 0); }
/* FUNKTIOIDEN MÄÄRITTELYT**********/
int valikko (void) { int val; do { clrscr(); printf ("\n ---- MENU ---- \n\n"); printf (" Valitse yksi vaihtoehdoista\n\n"); printf (" (1) Summa\n"); printf (" (2) Erotus\n"); printf (" (3) Tulo\n"); printf (" (0) Lopetus\n"); printf ("\n\n"); printf (" Anna valintasi (numero) : "); val = getche()-'0'; if (val < 0 || val > 3) { val=0; } }while (val!=0); return val; }
void summa(void) { int luku1; int luku2; clrscr(); printf ("Anna kaksi kokonaislukua :"); scanf ("%d %d",&luku1,&luku2); printf ("Lukujen summa on %d",luku1+luku2); }
Muiden funktioiden toteutukset liitetään ohjelmaan vastaavalla tavalla kuin summa()-funktio.