Menu
Coddy logo textTech

Dereference Operatörü (*)

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

Adresleri işaretçilerde nasıl saklayacağınızı bildiğinize göre, o bellek adresinde saklanan gerçek değere nasıl erişeceğinizi öğrenmeniz gerekir. Dereference operatörü (*), işaret ettiği değeri almak için işaretçiyi "takip etmenize" olanak tanır.

Bir işaretçi (pointer) değişkeninin önüne * operatörünü yerleştirdiğinizde, işaretçinin tuttuğu bellek adresinde saklanan değere erişir. Bunu, "bu adresteki odanın içinde ne varsa bana ver" demek gibi düşünün.

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // 25 yazdırır - age'in değeri

C dilinde yıldız işaretinin (*) iki farklı anlamı olduğunu anlamak önemlidir. int *ptr; gibi bir işaretçi tanımlarken, yıldız işareti ptr değişkeninin bir işaretçi olduğunu belirtir. *ptr gibi mevcut bir işaretçi ile kullanıldığında, işaret ettiği değere erişmek için işaretçiyi dereference eder.

Dereferans operatörü temeldir çünkü işaretçi döngüsünü tamamlar: & ile bir işaretçide bir adres saklayabilir ve ardından * ile o adresteki değeri geri alabilirsiniz. Bu, bellek adresleri aracılığıyla değişkenlere dolaylı olarak erişmenize ve onları değiştirmenize olanak tanır.

challenge icon

Görev

Kolay

Eksiksiz bir işaretçi (pointer) iş akışını (tanımlama, adres atama ve dereferencing) gösteren bir C programı yazın. Programınız şunları yapmalıdır:

  1. value adında bir tamsayı (integer) değişkeni tanımlayın ve 75 değeriyle başlatın
  2. price adında bir ondalıklı sayı (float) değişkeni tanımlayın ve 19.99 değeriyle başlatın
  3. value_ptr adında bir tamsayı işaretçisi tanımlayın
  4. price_ptr adında bir ondalıklı sayı işaretçisi tanımlayın
  5. value değişkeninin adresini value_ptr işaretçisine atamak için adres operatörünü kullanın
  6. price değişkeninin adresini price_ptr işaretçisine atamak için adres operatörünü kullanın
  7. value_ptr üzerinden value değerini yazdırmak için dereference (içerik) operatörünü kullanın
  8. price_ptr üzerinden price değerini tam olarak 2 ondalık basamakla yazdırmak için dereference (içerik) operatörünü kullanın

Çıktınız, dereference edilmiş değerleri aşağıdaki formatta görüntülemelidir:

Value through pointer: 75
Price through pointer: 19.99

Bu görev, dereference operatörünün işaretçide saklanan adresi takip ederek orijinal değişkenin değerini nasıl geri getirdiğine dair anlayışınızı test eder.

Kopya kağıdı

Dereference operatörü (*), bir işaretçinin (pointer) tuttuğu bellek adresinde saklanan değere erişmenizi sağlar.

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // 25 yazdırır - age değişkeninin değeri

Yıldız işaretinin (*) C dilinde iki farklı anlamı vardır:

  • int *ptr; gibi bildirimlerde - ptr değişkeninin bir işaretçi olduğunu belirtir
  • *ptr gibi mevcut işaretçilerle kullanıldığında - işaret ettiği değere erişmek için işaretçiyi dereference eder (çözer)

Dereference operatörü işaretçi döngüsünü tamamlar: & ile bir adresi saklayın, ardından * ile o adresteki değeri geri alın.

Kendin dene

#include <stdio.h>

int main() {
    // YAPILACAK: Kodunuzu buraya yazın
    // 1. Değişkenleri tanımlayın ve başlatın
    // 2. İşaretçileri tanımlayın
    // 3. İşaretçilere adresleri atayın
    // 4. Başvurusu kaldırılmış değerleri 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