CodeBlanks Logo Icon CodeBlanks

NULL

  • C kursu
  • Başlangıç
  • Ders 74/116
  • 5 dk

NULL işaretçi kavramını ve güvenliği öğrenirsin.

NULL işaretçi

NULL, hiçbir yere işaret etmeyen özel bir işaretçi değeridir. stdlib.h veya stddef.h başlığında tanımlıdır.

int *ptr = NULL;  /* ptr boş */
if (ptr == NULL) {
    printf("Boş\n");
}

Bir işaretçiyi NULL ile başlatmak, onun henüz bir yere işaret etmediğini açıkça belirtir. Bu, hatalı erişimi önler ve kodun okunurluğunu artırır.

NULL kontrolü

Bir işaretçiyi NULL olup olmadığını kontrol etmek için == kullanılır. NULL olmayan bir işaretçiyi * ile erişmek güvenlidir.

int x = 5;
int *ptr = &x;
if (ptr != NULL) {
    printf("%d\n", *ptr);  /* 5 yazar */
}

NULL bir işaretçiyi * ile erişmek tanımsız davranıştır; program çökebilir. Bu yüzden kontrol şarttır.

Uygulama NULL kontrolü ile güvenli erişim

int x = 42; tanımla. int *ptr = &x; ile bağla. if (ptr != NULL) bloğu içinde printf("%d\n", *ptr); çağır. Çıktı 42 olmalı.

Başlangıç kodu

main.c
#include <stdio.h>
#include <stddef.h>

int main(void) {
    int x = 42;
    /* ptr'yi x'e bağla */
    /* NULL değilse *ptr yazdır */
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <stddef.h>

int main(void) {
    int x = 42;
    int *ptr = &x;
    if (ptr != NULL) {
        printf("%d\n", *ptr);
    }
    return 0;
}

Beklenen çıktı

42

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir işaretçiyi NULL ile başlatmak neden iyidir?

  • Hızı artırır
  • Bellek açar
  • Derleyiciyi hızlandırır Doğru cevap
  • Hatalı erişimi önler

Açıklama: NULL ile başlatmak, henüz işaret etmeyen işaretçiyi açıkça belirtir; hatalı erişimi önler.

2 NULL kontrolü

Soru
int *ptr = NULL;
if (ptr ____) { /* ptr boş */ }
Cevap
int *ptr = NULL;
if (ptr == NULL) { /* ptr boş */ }

Açıklama: ptr == NULL ile boş kontrolü yapılır.

3 NULL kavramlarını eşleştir

Kavram Anlamı
NULL boş işaretçi
== NULL boş kontrolü
!= NULL dolu kontrolü
*ptr değere erişim

Başlangıç bölümündeki tüm dersler