CodeBlanks Logo Icon CodeBlanks

İşaretçi dizisi

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

İşaretçi dizisi oluşturmayı ve kullanmayı öğrenirsin.

İşaretçi dizisi

Bir işaretçi dizisi (array of pointers), her elemanı işaretçi olan bir dizidir. C'de int *arr[3]; yazımı, üç int * elemanlı bir dizi bildirir.

Örnek: int a = 1, b = 2, c = 3; int *arr[3] = {&a, &b, &c};. Burada arr[0] &a'ya, arr[1] &b'ye eşittir. *arr[1] size b'nin değerini verir. İşaretçi dizileri, özellikle dize listelerinde (argv gibi) çok yaygındır.

Dize listeleri için işaretçi dizisi

İşaretçi dizisinin en yaygın kullanımı dize listeleridir. C'de bir dize, char * türünde bir işaretçidir; dolayısıyla dize listesi char * dizisi olarak tutulur.

Örnek: char *names[3] = {"Ayşe", "Mehmet", "Zeynep"};. Burada her dize sabit, salt okunur bellekte durur; dizi yalnızca bu dizelere işaretçiler tutar. names[0] ilk dizeyi, names[1][0] ise ikinci dizenin ilk harfini verir. Bu yapı, komut satırı argümanlarından menü sistemlerine kadar geniş bir alanda kullanılır.

Uygulama İsim listesini yazdır

Üç isim içeren bir char *names[3] işaretçi dizisi tanımla (ör. "Ayşe", "Mehmet", "Zeynep"). Bir for döngüsü ile her ismi printf ile ayrı satıra yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// İsim dizisi tanımla
// for döngüsüyle her ismi yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int main(void) {
    char *names[3] = {"Ayşe", "Mehmet", "Zeynep"};
    for (int i = 0; i < 3; i++) {
        printf("%s\n", names[i]);
    }
    return 0;
}

Beklenen çıktı

Ayşe
Mehmet
Zeynep

Soru ve cevaplar

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

1 İşaretçi dizisi parçalarını eşle

Kavram Anlamı
int *arr[3] Dizi bildirimi
arr[0] İlk işaretçi
*arr[1] İşaret edilen değer
arr[i] = &x Atama

2 Üç dize tutan dizi nasıl bildirilir?

  • char **names[3];
  • char names[3];
  • char *names[3]; Doğru cevap
  • char *(names);

Açıklama: Char *names[3]; — üç char işaretçisi tutar.

3 Dizinin ikinci dizesini yazdır

Soru
char *names[3] = {"Ayşe", "Mehmet", "Zeynep"};
printf("%s\n", names[____]);
Cevap
char *names[3] = {"Ayşe", "Mehmet", "Zeynep"};
printf("%s\n", names[1]);

Açıklama: names[1] ikinci dize olan "Mehmet"e işaret eder.

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