Genel Bilgi|  Program Kontrol|  Fonksiyonlar|  Arrayler |  Pointerlar |  Link List |  String| Structurelar |  Input/Output| Yeni Baslayanlar |  Email|

TurkceC yi Ara
  
Pointer Operatorler
Fonksiyonlari Cagirma
Const Kullanimi
Pointer Aritmetik
Pointer ve Array
Durum Calismasi
Fonksiyonlara Pointer

Fonksiyonlara Pointerlar
Bir fonksiyona pointer hafizada ki fonksiyonun adresini icerir.Arrayler kisminda gordugumuz gibi, bir array ismi gercekte bir arrayin ilk elementinin adresidir. Fonksiyonlara pointerlar fonksiyonlara gonderilebilir, fonksiyondan geri dondurulebilir ve array icinde sakli bir sekilde tutulabilirler. Fonksiyonlara pointerlari daha iyi bir sekilde belirtmek icin assagida yer alan programda bubble sortu bu methoda uygun bir sekilde degistirdik. Programda yer alan bubleSort fonksiyonu bir fonksiyona pointeri almaktadir. Eger kullanici 1 girerse bilgiler kucukten buyuge, 2 girerse buyukten kucuge yazilacaktir.
int (*karsilastir)(int, int)
Bu bubble sorta iki tamsayi parameter ve bir tam sayi sonucuna geri donen bir fonksiyona pointer olan parameter beklendigini bildirir. Programda bubble sorta gonderilen fonksiyon bir if(eger) durumu ile cagiriliyor. Bu durum su sekilde yazilir
if((*karsilastir)(calis[say], calis[say+1]))
Burada kullandigimiz (*) sembol degiskenini bir pointer oldugunu gosterir.
Assagida ki program bir datada yer alan sayilari istege gore buyukten kucuge veya kucukten buyuge siralar.

#include

#define SIZE 10

void bubble(int *, const int, int (*)(int, int));

int KucukTenBuyuge(const int , const int);

int BuyukTenKucukge(const int, const int);

main()

{

  int a[SIZE] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37};          /*Listenin Orijinal Hali */

 int sayac, sira;

 printf("Kucukten Buyuge Siralamak Icin 1 Girin\n");

 printf("Buyukten Kucuge Siralamak Icin 2 Girin\n");

 scanf("%d", &sira);

 

 printf("Data elemanlari Orijinal Hali\n");

 for(sayac = 0; sayac <= SIZE - 1; sayac++)

    printf("%4d", a[sayac]);

if(sira = = 1)

{

  bubble(a, SIZE, KucukTenBuyege);                      /*bubble fonksiyonunu cagirma*/

  printf("\nData Elemanlari Kucukten Buyuge\n");

}

else{

         bubble(a, SIZE, BuyukTenKucuge);         /*bubble fonksiyonunu buyukten kucuge siralamak icin

                                                                            cagirma*/

         printf("Data Elemanlari Buyukten Kucuge\n");

       }

       for(sayac = 0; sayac<= SIZE-1; sayac++)

            printf("%4d", a[sayac]);

       printf("\n");

   return(0);

}

void bubble(int *calis, const int buyukluk, int (*karsilastir)(int, int))

{

  int gec, say;

  void degistir(int *, int *);

 for(gec = 1; gec <= buyukluk -1; gec++)

    for(say = 0; sau <= buyukluk - 2; say++)

       if((*karsilastir) (calis[say], calis[say + 1] ) );

           degistir(&calis[say], &[say + 1]);

}

void degistir(int *eleman, int * eleman2)

{

   int hedef;

  hedef = *eleman;

  *eleman = *eleman2;

  *eleman2 = hedef;

}

int KucukTenBuyuge(const int a, const int b)

{

   return b < a;

}

int BuyukTenKucuge(const int a , const int b)

{

   return b > a;

}

Anket
Sitemizi Nasil Buldunuz?
  Cok Faydali
  Eksikleri var
  idare eder
  Ilerde Cok daha iyi olacak
  Berbat
  Cok kotu

isupper, islower, toupper, tolower kullanimi eklendi.25 Ocak Saat 08:15 am


String deger degistirme fonksiyonlari eklendi.25 Ocak Saat 09:00 am



atof, atoi, atol kullanimi eklendi.25 Ocak Saat 09:15 am