/* teht 1b */ #include void poks(double a, double *b); main() { double x = 1, y = 2; /* 1 */ poks(x, &y); /* 2 */ printf("%lf %lf\n", x, y); /* 3 */ } void poks(double a, double *b) /* 2.1 */ { *b = a + 5; /* 2.2 */ a = 10; /* 2.3 */ } /* (1) Esitellään muuttujat x ja y, ja alustetaan ne 1:ksi ja 2:ksi. (2) Kutsutaan funktiota poks argumenteilla x ja &y. nyt poksissa: (2.1) muodollisissa argumenteissa a ja b on x:n arvo ja y:n osoite (2.2) b:hen (tarkemmin, muuttujaan johon b osoittaa) sijoitetaan a + 5. Koska b osoittaa y:hyn (sen arvo on y:n osoite), tulos menee y:hyn! Koska a on nyt 1, y:ksi tulee 1 + 5 = 6. (2.3) a on muodollinen argumentti; sen muuttaminen ei tee tässä yhtään mitään -- tämä rivi on vain hämäystä! (3) poks ei siis ole vaikuttanut x:n arvoon, se on yhä 1, mutta y:ksi on tullut 6. Siiiis: tulostus on: 1.000000 6.000000 */