Menu
Coddy logo textTech

Özet: İşaretçi ile Dizi Gezinme

Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 11 / 63.

challenge icon

Görev

Kolay

İşaretçi aritmetiği ve dizi-işaretçi eşdeğerliğini kullanarak bir tam sayı dizisindeki tüm öğelerin toplamını hesaplayan bir fonksiyon içeren bir C programı yazın. Programınız şunları yapmalıdır:

  1. İki parametre alan calculateSum adında bir fonksiyon oluşturun:
    • Diziyi temsil eden bir tam sayı işaretçisi (int *arr)
    • Dizideki öğe sayısını temsil eden bir tam sayı (size)
  2. calculateSum fonksiyonu içinde:
    • Bir sum değişkenini 0 olarak başlatın
    • Bir ptr işaretçi değişkeni oluşturun ve bunu dizinin başlangıcını gösterecek şekilde ayarlayın
    • İşaretçi aritmetiğini kullanarak diziyi dolaşmak için bir döngü kullanın
    • Her yinelemede, ptr tarafından işaret edilen değeri sum değişkenine ekleyin
    • Bir sonraki öğeye geçmek için işaretçiyi artırın
    • Hesaplanan toplamı döndürün
  3. main fonksiyonu içinde:
    • Dizinin boyutunu temsil eden bir n tam sayısını okuyun
    • n boyutunda bir tam sayı dizisi tanımlayın
    • Diziyi doldurmak için girdiden n adet tam sayı okuyun
    • Dizi ve boyutu ile calculateSum fonksiyonunu çağırın
    • Sonucu şu formatta yazdırın: "Sum: [value]"

Fonksiyon, dizi gezintisi için işaretçi aritmetiği kullanmalıdır - arr[i] gibi dizi indeksleme notasyonunu kullanmayın. Bunun yerine, dizi öğelerine erişmek için işaretçi dereferans (dereferencing) ve artırma işlemlerini kullanın.

Örneğin, girdi şu şekildeyse:

5
10 20 30 40 50

Çıktınız şu olmalıdır:

Sum: 150

Bu zorluk, fonksiyonların dizileri işaretçi parametreleri olarak nasıl kabul edebildiğini, dizileri verimli bir şekilde dolaşmak için işaretçi aritmetiğinin nasıl kullanılacağını ve dizi adlarının fonksiyonlara aktarıldığında otomatik olarak nasıl işaretçilere dönüştürüldüğünü anlama yeteneğinizi test eder.

Kendin dene

#include <stdio.h>

// TODO: calculateSum fonksiyonunuzu buraya yazın

int main() {
    int n;
    scanf("%d", &n);
    
    int arr[n];
    
    // Dizi elemanlarını oku
    for(int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    
    // TODO: calculateSum fonksiyonunu çağırın ve sonucu saklayın
    
    // TODO: Sonucu "Sum: [değer]" formatında yazdırın
    
    return 0;
}

Logic & Flow bölümündeki tüm dersler