Menu
Coddy logo textTech

İşaretçiler ile Değişkenleri Değiştirme

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

Artık işaretçilerin gerçek gücünden yararlanabilirsiniz: orijinal değişkeni bir fonksiyon aracılığıyla değiştirmek. Bir fonksiyona bir işaretçi geçirdiğinizde, fonksiyon o bellek adresinde saklanan değeri değiştirmek için dereference (başvuru giderme) operatörünü kullanabilir.

Fonksiyonun içinde, orijinal değişkenin değerine erişmek ve onu değiştirmek için * operatörünü kullanarak işaretçinin başvurusunu çözersiniz (dereference). Bu teknik, değişkenin bellekteki konumuna bir referans gönderdiğiniz için pass-by-reference olarak adlandırılır.

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Orijinal değeri değiştirmek için dereference yapın
}

int main() {
    int x = 5;
    doubleValue(&x);  // x'in adresini gönderin
    // x artık 10!
    return 0;
}

Anahtar nokta, işaretçinin tuttuğu bellek adresindeki değeri değiştirmek için atamanın sol tarafında *ptr kullanmaktır. Bu, fonksiyonların çağıran fonksiyondaki değişkenleri kalıcı olarak değiştirmesine olanak tanıyarak, değer ile geçmenin (pass-by-value) tek başına başaramayacağı güçlü programlama olanakları sunar.

challenge icon

Görev

Kolay

Bir tam sayının değerini üç katına çıkaran bir fonksiyon oluşturarak, işaretçiler (pointers) aracılığıyla değişkenlerin değiştirilmesini gösteren bir C programı yazın.

Programınız şunları yapmalıdır:

  1. Parametre olarak bir tam sayı işaretçisi alan tripleValue adında bir fonksiyon oluşturun
  2. tripleValue fonksiyonu içinde, bellek adresindeki değeri 3 ile çarpmak için dereference (adresteki değere erişim) operatörünü kullanın
  3. tripleValue fonksiyonu içinde, yeni değeri şu formatta yazdırın: Value tripled to: [value]
  4. main fonksiyonunda, number adında bir tam sayı değişkeni tanımlayın ve ona 8 değerini atayın
  5. Orijinal değeri şu formatta yazdırın: Original value: [value]
  6. tripleValue fonksiyonunu çağırın ve adres operatörünü kullanarak number değişkeninin adresini geçirin
  7. Fonksiyon çağrısından sonra, number değişkeninin son değerini şu formatta yazdırın: Final value: [value]

Çıktınız, fonksiyonun işaretçi aracılığıyla orijinal değişkeni başarıyla değiştirdiğini göstermelidir:

Original value: 8
Value tripled to: 24
Final value: 24

Bu meydan okuma, fonksiyonun işaretçiyi dereference ederek ve o bellek konumundaki değeri değiştirerek orijinal değişkeni kalıcı olarak değiştirebildiği, işaretçiler kullanarak referansla geçme (pass-by-reference) yönteminin gücünü göstermektedir.

Kendin dene

#include <stdio.h>

// TODO: tripleValue fonksiyonunuzu buraya yazın

int main() {
    // TODO: Kodunuzu buraya yazın
    // number değişkenini tanımlayın ve başlatın
    // Orijinal değeri yazdırın
    // tripleValue fonksiyonunu çağırın
    // Son değeri 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