Pointers to Functions

Kategori: C , 29 Haziran 2019 , JanFranco


Herhangi bir integer değeri, float değeri işaret eden pointerları daha önce tanımlamıştık. Son dökümanda bir pointerı işaret eden pointer tanımlamıştık. Bu sefer bir fonksiyonu işaret eden pointer tanımlayacağız:

int process(char *x, float y){
    
}

int main(){
    int (*p)(char*, float);
    p = process;
    p("Hello!", 123.12);
    return 0;
}

Bir fonksiyonu gösteren pointer tanımlamak ne işimize yarayacak diye düşünüebilirsiniz. Fonksiyonları gösteren pointer sayesinde, programın çalışma anında hangi fonksiyonun çağırılacağını değiştirebiliriz. Örneğin:

struct creature {
    int xpos;
    int ypos;
    float health;
    int (*behavior)(struct useful_data*);
};

Burada creature adında bir struct tanımladık. Bu struct'tan 100 adet oluşturduğumuzu düşünelim. Her bir struct'ta çağırılacak fonksiyonu belirleyebiliriz. Çağıracağımız fonksiyon her zaman int tipinde olmayabilir. Eğer çağıracağımız fonksiyonların tipleri birbirinden farklı ise void pointer tanımlayabilir ve bu pointer ile fonksiyonları gösterebiliriz.


Sonraki Yazı: Variable Argument Lists
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın