CodeBlanks Logo Icon CodeBlanks

İşaretçiye işaretçi

  • C kursu
  • Orta seviye
  • Ders 1/116
  • 5 dk

Çift işaretçi (**) kavramını öğrenirsin.

Çift işaretçi

Bir işaretçiye işaretçi (pointer to pointer), bir işaretçinin adresini tutan değişkendir. C'de iki yıldız (**) ile bildirilir.

Örnek: int x = 5; int *p = &x; int **pp = &p;. Burada p, x'in adresini tutar; pp ise p'nin adresini tutar. *pp size p'yi verir (yani x'in adresi); **pp ise x'in kendisini verir. İki seviye dolaylama (indirection) böylece sağlanır.

Çift işaretçi ile değer değiştirme

Çift işaretçinin en güçlü yanı, orijinal değişkeni başka bir fonksiyon içinden değiştirebilmesidir. **pp = 42; yazdığınızda x'in değeri doğrudan değişir.

Bu, tek işaretçinin değişkeni değiştirmesine benzer; sadece bir seviye daha dışarıdasınız. *pp size p'yi verir; **pp ise x'in kendisine erişir. Bu yüzden çift işaretçi, dinamik dizi tahsisinde ve ağaç veri yapılarında sık görülür.

Uygulama Çift işaretçi ile değeri değiştir

int x = 5; ile bir değişken tanımla. int *p = &x; ve int **pp = &p; ile çift işaretçi kur. **pp üzerinden x'in değerini 42 yap ve printf ile x'i yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// x, p ve pp tanımla
// **pp ile x'i 42 yap
// x'i yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int main(void) {
    int x = 5;
    int *p = &x;
    int **pp = &p;
    **pp = 42;
    printf("%d\n", x);
    return 0;
}

Beklenen çıktı

42

Soru ve cevaplar

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

1 Hangisi int türüne çift işaretçi bildirir?

  • int (*pp)*;
  • int *pp[];
  • int pp**;
  • int **pp; Doğru cevap

Açıklama: int **pp; pp'nin int* türüne işaretçi olduğunu söyler.

2 Çift dolaylama ile x'e eriş

Soru
int x = 5;
int *p = &x;
int **pp = &p;
printf("%d\n", ____);
Cevap
int x = 5;
int *p = &x;
int **pp = &p;
printf("%d\n", **pp);

Açıklama: **pp iki kez dolaylama yapar ve x'in değerini verir.

3 Çift işaretçi parçalarını eşle

Kavram Anlamı
int *p Tek işaretçi
int **pp Çift işaretçi
*pp p'nin değeri
**pp x'in değeri

Orta seviye bölümündeki tüm dersler