/* atk1 h6esim1 -- pointtereita */ #include /* funktioiden prototyypit */ /* p on osoitin kokonaislukutyyppiseen tietoon. se voidaan määritellä kirjoittamalla int* p, int *p tai int * p */ void muuta(int* p); main() { int x; /* kok. lukutyyppinen muuttuja */ int* q; /* osoitin kok. lukutyyppiseen tietoon */ x = 6; q = &x; /* q "osoittaa" x:ään */ /* x antaa muuttujan x arvon &x x:n muistipaikan osoite q q:n arvo, ts. jokin muistipaikan osoite, josta löytyy int-tyyppistä tietoa ( tällä hetkellä x:n osoite ) *q sen muistipaikan sisältö, johon q osoittaa ( tällä hetkellä x:n arvo ) &q q:n muistipaikan osoite ( ei tarvita ) */ muuta(q); /* *q = (*q+1)*2, ts. x = (x+1)*2 */ printf("*q = %d\n",*q); muuta(&x); /* *(&x) = (*(&x)+1)*2, ts. x = (x+1)*2 */ printf("x = %d\n",x); } void muuta(int* p) { /* operoidaan sen muistipaikan sisältöön, johon p viittaa, ts. lukuun *p */ *p = (*p+1)*2; /* *p = (*p)*(*p); */ }