Menu
Coddy logo textTech

Fonksiyonlara İşaretçi Gönderme

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

Değerle çağırmanın (pass-by-value) sınırlamalarını anladığınıza göre, fonksiyonlara işaretçi (pointer) aktarmanın bu sorunu nasıl çözdüğünü keşfedelim. Bir değişkenin değerinin bir kopyasını aktarmak yerine, değişkenin bellek adresini fonksiyona aktarabilirsiniz.

Bir fonksiyona bir işaretçi (pointer) geçirdiğinizde, fonksiyon orijinal değişkenin bellekteki konumuna erişim sağlar. Bu, fonksiyonun verinin sadece bir kopyasıyla değil, doğrudan orijinal veriyle çalışabileceği anlamına gelir.

void processValue(int *ptr) {
    // ptr orijinal değişkenin adresini tutar
    // Fonksiyon artık o bellek konumuna erişebilir
}

int main() {
    int x = 10;
    processValue(&x);  // x'in adresini geçir
    return 0;
}

Değişkenin adresini iletmek için fonksiyonu çağırırken adres operatörünü & nasıl kullandığımıza dikkat edin. Fonksiyon parametresi, bir tam sayıya (integer) işaretçi almayı beklediğini belirtecek şekilde int *ptr olarak bildirilmiştir. Bu temel teknik, fonksiyonların programınızın verileriyle etkileşime girmesi için güçlü olanaklar sunar.

challenge icon

Görev

Kolay

Fonksiyonlara işaretçi (pointer) aktarımını gösteren bir C programı yazın. Programınız şunları yapmalıdır:

  1. Parametre olarak bir tam sayı işaretçisi alan displayValue adında bir fonksiyon oluşturun
  2. displayValue fonksiyonu içinde, bellek adresindeki değere erişmek için dereference (içerik) operatörünü kullanın ve şu formatta yazdırın: Value at address: [value]
  3. main fonksiyonunda, number adında bir tam sayı değişkeni tanımlayın ve ona 42 değerini atayın
  4. Orijinal değeri şu formatta yazdırın: Original value: [value]
  5. displayValue fonksiyonunu çağırın ve adres operatörünü kullanarak number değişkeninin adresini geçirin
  6. Fonksiyon çağrısından sonra bir onay mesajı yazdırın: Function call completed

Çıktınız, fonksiyonun orijinal değişkenin bellek adresini başarıyla aldığını ve bu adrese eriştiğini göstermelidir:

Original value: 42
Value at address: 42
Function call completed

Bu görev, fonksiyonlara işaretçi aktarma temel kavramını tanıtarak, fonksiyonun bir değerin kopyasıyla çalışmak yerine orijinal değişkenin bellek konumuna erişmesine olanak tanır.

Kopya kağıdı

İşaretçileri fonksiyonlara aktarırken, fonksiyon değerin bir kopyası yerine orijinal değişkenin bellek konumuna erişim sağlar.

Bir değişkenin adresini bir fonksiyona aktarmak için adres (address-of) operatörünü & kullanın:

void processValue(int *ptr) {
    // ptr orijinal değişkenin adresini tutar
    // Fonksiyon artık o bellek konumuna erişebilir
}

int main() {
    int x = 10;
    processValue(&x);  // x'in adresini aktar
    return 0;
}

Fonksiyon parametresi, bir tam sayıya işaretçi almayı beklediğini belirtmek için int *ptr olarak bildirilir.

Kendin dene

#include <stdio.h>

// YAPILACAK: displayValue fonksiyonunuzu buraya yazın

int main() {
    // YAPILACAK: Kodunuzu buraya yazın
    // 1. number değişkenini tanımlayın ve başlatın
    // 2. Orijinal değeri yazdırın
    // 3. displayValue fonksiyonunu çağırın
    // 4. Tamamlanma mesajını yazdırın
    
    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

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