/* Pointterit funktion argumenttina */ #include /* Kun aliohjelmalle välitetään argumentteina muuttujia, * aliohjelma luo niistä omat "kopiot", ja alkuperäisten, * pääohjelmassa määriteltyjen muuttujien arvot pysyvät samoina, * vaikka aliohjelmassa muutetaan muuttujien arvoja. */ /* Funktion swap tarkoitus olisi vaihtaa argumentit keskenään. */ void swap(int,int); /* Jos aliohjelmassa halutaan vaikuttaa pääohjelman muuttujien * arvoihin, on aliohjelmalle välitettävä argumenttina muuttujien * osoitteet. Aliohjelmassa voidaan sitten operoidan näiden muistipaikkojen * sisältöjen kanssa, jolloin muutos näkyy pääohjelmassa. */ void swap_using_pointers(int*,int*); main() { int n=1,m=2; /* %-35s tulostaa merkkijonon 35 merkin levyiseen kenttään * ja tasaa tekstin vasempaan reunaan. (%35s tasaa oikeaan reunaan) */ printf("%-35s n=%i, m=%i.\n","Originally",n,m); swap(n,m); printf("%-35s n=%i, m=%i.\n","After swap(n,m)", n,m); swap_using_pointers(&n,&m); printf("%-35s n=%i, m=%i.\n","After swap_using_pointers(n,m)",n,m); } void swap(int x,int y) { int tmp; tmp=x; x=y; y=tmp; } void swap_using_pointers(int *xp, int *yp) { int tmp; tmp=*xp; /* Sijoitetaan muuttujaan tmp sen muistipaikan sisältö, * johon xp osoittaa. */ *xp=*yp; *yp=tmp; }