İş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
#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
#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
for (int *p = arr; p < end; ____) { /* ... */ }
for (int *p = arr; p < end; p++) { /* ... */ }
Açıklama: p++ her adımda bir sonraki elemana atlar.