#include <stdio.h>
void degis(int *a,int *b){
int z;
z=*a;
*a=*b;
*b=z;
}
main(){
int x=10,y=32;
printf("x : %d\n",x);
printf("y : %d\n\n",y);
degis(&x,&y);
printf("x : %d\n",x);
printf("y : %d\n",y);
}
Bunu yapmak için x in adresini başka bir değişkende saklamak gerekiyor. z değişkeninde x in adresini saklamak için bir fonksiyon(degis(int *a,int *b)) oluşturuyoruz.Bu fonksiyonda a ve b yi pointer olarak veriyoruz. Çünkü y nin adresini x e aktaracağız. Ama bunu &x=&y şeklinde yapamayız. Pointer olması gerekir bu yüzden . *a=*b şeklinde yapıyoruz. Fonksiyonda degis(&x , &y) dediğimizde *a=&x *b=&y olur. Böylece a ve b nin pointerleri x in adresine eşit olmuş olur. Biz *a = *b eşitlediğimizde x in adresi y nin adresi olmuş olur. *b=z; dediğimizdede z de sakladığımız x in adresini y nin adresine aktarmıs oluruz . Böylece takas olmuş olur.
Hiç yorum yok:
Yorum Gönder