Syötä kaksi kokonaislukua, A ja B, ja tulosta A ja B järjestyksessä ensin suurin ja sitten pienimpä. Koodi on seuraava: Kuinka viitata muuttujaosoitteeseen ja ottaa osoiteoperaattori *Osoitinoperaattori (tai epäsuora pääsyoperaattori) #include "stdafx.h" #include <stdio.h> int main(int argc, char* argv[])
{ int *p1,*p2,*p,a,b; printf("syötä kaksi kokonaislukua:"); scanf("%d,%d",&a,&b); p1=&a; p2=&b; if(a<b) {p1=&b;p2=&a;}//Osoittimen painotus {p=p1; p1=p2; p2=p; Nyt sille annetaan suoraan uudet arvot P1:lle ja P2:lle, jolloin välimuuttujaa p ei tarvitse määritellä, ja ohjelma voi muuttua tiiviimmäksi Tämä algoritmi ei vaihda kokonaislukumuuttujien arvoja, vaan kahden osoittimen arvoja (osoitteet a:lle ja b:lle)
printf("a=%d,b=%d\n",a,b); printf("max=%d,min=%d\n",*p1,*p2); palautus 0;
}
|