Özet - Diziler ve işaretçiler
- C kursu
- Başlangıç
- Ders 82/116
- 5 dk
Dizi-işaretçi ilişkisini birleştirerek bir dizi toplam fonksiyonu yazarsın.
Özet: Diziler ve işaretçiler
Bu grupta diziler ve işaretçilerin yakın ilişkisini gördün:
- Dizi adı, ilk elemanın adresine dönüşür (çürüme).
p[i]ile*(p + i)aynıdır.- Diziyi fonksiyona geçirince işaretçi olur; boyut ayrı verilir.
end = arr + nkalıbı işaretçi döngüsü kurar.- İki boyutlu diziler iç içe döngü ile gezilir.
Şimdi kısa bir alıştırmayla bunları birleştirelim.
Uygulama Özet alıştırması
int sum(int *arr, int n) fonksiyonunu tanımla: for ile diziyi topla ve total döndür. main içinde int arr[3] = {10, 20, 30}; tanımla. int *p = arr; ile başla. printf ile *p, *(p + 2) ve sum(arr, 3) sonuçlarını ayrı satırlarda yazdır. Çıktı 10, 30, 60 olmalı.
Başlangıç kodu
#include <stdio.h>
/* sum fonksiyonunu yaz: int işaretçi ve boyut al, for ile topla */
int main(void) {
int arr[3] = {10, 20, 30};
/* p'yi arr'ya bağla; *p, *(p+2) ve sum(arr, 3) yazdır */
return 0;
}Örnek çözüm
#include <stdio.h>
int sum(int *arr, int n) {
int total = 0;
for (int i = 0; i < n; i++) {
total += arr[i];
}
return total;
}
int main(void) {
int arr[3] = {10, 20, 30};
int *p = arr;
printf("%d\n", *p);
printf("%d\n", *(p + 2));
printf("%d\n", sum(arr, 3));
return 0;
}Beklenen çıktı
10 30 60
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Dizi adı aslında nedir?
- Dizinin uzunluğu
- Dizinin kopyası
- İlk elemana işaretçi Doğru cevap
- NULL işaretçi
Açıklama: Dizi adı, ilk elemanın adresine dönüşür.
2 Kavramları eşleştir
| Kavram | Anlamı |
|---|---|
arr |
dizi adı = işaretçi |
*(p+i) |
işaretçi erişimi |
int *arr |
fonksiyon parametresi |
p < end |
döngü koşulu |
3 İşaretçi ile elemana eriş
int arr[3] = {10,20,30};
int *p = arr;
printf("%d", *(p + ____)); /* 30 yazar */
int arr[3] = {10,20,30};
int *p = arr;
printf("%d", *(p + 2)); /* 30 yazar */
Açıklama: *(p + 2) üçüncü elemanı (30) verir.