CodeBlanks Logo Icon CodeBlanks

İşaretçi döngüsü

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

İşaretçi ile dizi üzerinde döngü kurmayı öğrenirsin.

İşaretçi ile döngü

Bir diziyi indis kullanmadan da gezebilirsin. Baş işaretçi ve son işaretçi tanımlayıp aralarındaki her elemanı yazdırırsın.

int arr[3] = {7, 8, 9};
int *p = arr;       /* baş */
int *end = arr + 3; /* son */
while (p < end) { printf("%d", *p); p++; }

p++ her adımda bir sonraki elemana atlar. p < end koşulu son elemana kadar döngüyü sürdürür.

end işaretçisi kalıbı

end = arr + n kalıbı, dizinin sonunu işaret eden bir işaretçi verir. end, son elemanın bir sonrasını gösterir; dizinin dışındadır ve sadece karşılaştırma için kullanılır.

int arr[3] = {7, 8, 9};
int *end = arr + 3;  /* arr[3] düşünülemez */
for (int *p = arr; p < end; p++) {
    printf("%d ", *p);
}

Bu kalıp C++ yineleyicilerine (iterators) benzer ve döngüleri temiz tutar.

Uygulama İşaretçi döngüsü ile yazdır

int arr[3] = {7, 8, 9}; tanımla. int *p = arr; ve int *end = arr + 3; ile baş ve son işaretçileri tanımla. while (p < end) döngüsü içinde printf("%d\n", *p); ile elemanı yazdır ve p++ ile ilerle. Çıktı 7, 8, 9 olmalı.

Başlangıç kodu

main.c
#include <stdio.h>

int main(void) {
    int arr[3] = {7, 8, 9};
    /* işaretçi p'yi başa, end'i sona al; p < end oldukça *p yazdır ve p'yi artır */
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int main(void) {
    int arr[3] = {7, 8, 9};
    int *p = arr;
    int *end = arr + 3;
    while (p < end) {
        printf("%d\n", *p);
        p++;
    }
    return 0;
}

Beklenen çıktı

7
8
9

Soru ve cevaplar

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

1 p başı, end sonu işaret ediyor. Döngü koşulu ne olmalı?

  • p < end Doğru cevap
  • p > end
  • p == end
  • p = end

Açıklama: p < end koşulu son elemana kadar döngüyü sürdürür.

2 Döngü parçalarını eşleştir

Kavram Anlamı
p++ bir ileri
p < end döngü koşulu
*p geçerli değer
end = arr + n son işaretçi

3 Döngü adımını tamamla

Soru
for (int *p = arr; p < end; ____) { /* ... */ }
Cevap
for (int *p = arr; p < end; p++) { /* ... */ }

Açıklama: p++ her adımda bir sonraki elemana atlar.

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