10 Temmuz 2014 Perşembe

Pointerlarda takas(geçiş) örneği


#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