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ğeriC 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.
Görev
KolayEksiksiz 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:
valueadında bir tamsayı (integer) değişkeni tanımlayın ve 75 değeriyle başlatınpriceadında bir ondalıklı sayı (float) değişkeni tanımlayın ve 19.99 değeriyle başlatınvalue_ptradında bir tamsayı işaretçisi tanımlayınprice_ptradında bir ondalıklı sayı işaretçisi tanımlayınvaluedeğişkeninin adresinivalue_ptrişaretçisine atamak için adres operatörünü kullanınpricedeğişkeninin adresiniprice_ptrişaretçisine atamak için adres operatörünü kullanınvalue_ptrüzerindenvaluedeğerini yazdırmak için dereference (içerik) operatörünü kullanınprice_ptrüzerindenpricedeğ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.99Bu 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ğeriYıldız işaretinin (*) C dilinde iki farklı anlamı vardır:
int *ptr;gibi bildirimlerde -ptrdeğişkeninin bir işaretçi olduğunu belirtir*ptrgibi 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;
}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
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String Fonksiyonları