Void Pointers, NULL Pointers

Kategori: C , 26 Haziran 2019 , JanFranco


Daha önce de gördüğümüz gibi pointerların bir çok türü vardır. integer-pointerlar, float-pointerlar vs. Bu dökümanda void ve NULL pointerları göreceğiz. Bir integer-pointer integeri işaret eder. Bir void-pointer ise herşeyi işaret eder. Belli bir türe ihtiyaç duymaz. Void pointerları, parametre olarak neyin verileceği bilinmeyen fonksiyonlarda kullanabiliriz. Bir örnek görelim:

void *pointer_array[10];
int index = 0;

void append_pointer(void *p){
    pointer_array[index] = p;
    index++;
}

void *get_pointer(int i){
    return pointer_array[i];
}

int main(){

    char *s = "Hello!", *s2;
    int a = 10, *b, *b2;

    b = &a;

    append_pointer(s);
    append_pointer(b);

    s2 = get_pointer(0);
    b2 = get_pointer(1);

    return 0;
}

Gördüğünüz gibi append_pointer fonksiyonuna char ve integer tiplerinde iki farklı pointer yollayabildik. Bunu void pointer sayesinde gerçekleştirdik. Daha sonra get_pointer fonksiyonu ile gönderdiğimiz verileri geri aldık. main fonksiyonu dahil olmak üzere, fonksiyonlarda pointer_array'i global bölgede tanımladığımı için kullanabildik. Aynı şekilde index değişkenini de bu şekilde kullanabildik. Bir diğer dikkat edilmesi gereken nokta da get_pointer fonksiyonunun return tipidir. Daha önce kullanmadığımız bir şekilde void pointer döndürmekte. Son olarak NULL pointerlardan bahsedelim. NULL pointerlar hiç bir şeyi işaret etmeyen pointerlardır. Hataları tespit etmekte oldukça kullanışlılardır. Örnek görelim:

int *p = malloc(sizeof(100));

if(p == NULL){
    printf("Error!");
}


Sonraki Yazı: Multifile Projects
Yorumlar

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