Dereference Operatörü (*)
Coddy'nin C Journey'sinin Mantık & Akış 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.
* operatörünü bir işaretçi değişkeninin önüne yerleştirdiğinde, işaretçinin tuttuğu bellek adresinde depolanan değere erişir. Bunu, "bana bu adresteki odanın içinde ne olduğunu ver" demek gibi düşünebilirsin.
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
KolayBildirim, adres ataması ve başvuru kaldırma işlemlerini içeren eksiksiz işaretçi iş akışını gösteren bir C programı yaz. Programın şunları yapması gerekir:
valueadlı bir tamsayı değişkeni bildir ve 75 değeriyle başlatpriceadlı bir float değişkeni bildir ve 19.99 değeriyle başlatvalue_ptradlı bir tamsayı işaretçisi bildirprice_ptradlı bir float işaretçisi bildir- Adres operatörünü kullanarak
valuedeğişkeninin adresinivalue_ptrdeğişkenine ata - Adres operatörünü kullanarak
pricedeğişkeninin adresiniprice_ptrdeğişkenine ata - Dereference operatörünü kullanarak
valueüzerindenvalue_ptrdeğerini yazdır - Dereference operatörünü kullanarak
priceüzerindenprice_ptrdeğerini tam olarak 2 ondalık basamakla yazdır
Çıktınız, başvurusu kaldırılmış değerleri aşağıdaki biçimde göstermelidir:
Value through pointer: 75
Price through pointer: 19.99Bu görev, dereference operatörünün işaretçinin sakladığı adresi izleyerek özgün değişkenin değerini nasıl aldığını anladığınızı test eder.
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.
Mantık & Akış 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ıKendi başına pratik yap: Online C derleyicisi