Dereference Operatörü
Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 3 / 56.
Artık bir değişkenin işaretçisini alabildiğinize göre, o bellek adresindeki değeri nasıl okuyacağınızı ve değiştireceğinizi öğrenmeniz gerekir. İşte burada dereference (dolaylı erişim) operatörü (*) temel bir önem kazanır.
Dereferans operatörü *, bir işaretçinin (pointer) gösterdiği bellek adresinde saklanan değere erişmek için kullanılır. Bir işaretçi değişkeninin önüne * koyduğunuzda, adresi "takip eder" ve size orada saklanan gerçek değeri verir.
int number = 42;
int* ptr = &number; // ptr, number değişkeninin adresini saklar
int value = *ptr; // value artık 42 değerini içerirİşaretçi aracılığıyla orijinal değişkeni değiştirmek için dereference (adres çözümleme) operatörünü de kullanabilirsiniz. *ptr ifadesine yeni bir değer atadığınızda, aslında o bellek konumunda saklanan değeri değiştirmiş olursunuz:
*ptr = 100; // number değerini 100 olarak değiştirir
// ptr üzerinden değiştirmiş olsak bile number artık 100'dürBu dolaylı erişim, işaretçileri bu kadar güçlü kılan şeydir; onlara işaret eden bir işaretçiniz olduğu sürece programınızın herhangi bir yerinden değişkenleri okuyabilir ve değiştirebilirsiniz.
Görev
KolayBir işaretçi (pointer) aracılığıyla bir değişkenin değerini değiştirerek dereference operatörünü gösteren bir program oluşturun.
Aşağıdaki girdiler sağlanacaktır:
- Bir değişkenin başlangıç değerini temsil eden bir tam sayı
- İşaretçi aracılığıyla atanacak yeni değeri temsil eden bir tam sayı
Programınız şunları yapmalıdır:
temperatureadında bir tam sayı değişkeni tanımlayın ve bunu ilk girdi değeriyle başlatıntemperaturedeğişkenini işaret edentempPtradında bir işaretçi oluşturun- İşaretçiyi dereference ederek orijinal değeri yazdırın
- İşaretçi aracılığıyla
temperaturedeğerini ikinci girdi değerine değiştirmek için dereference operatörünü kullanın - İşaretçiyi tekrar dereference ederek yeni değeri yazdırın
Aşağıdaki tam çıktı formatını kullanın:
Original value: [original value]
New value: [new value]Kopya kağıdı
Dereferans operatörü *, bir işaretçinin (pointer) gösterdiği bellek adresinde saklanan değere erişmek için kullanılır:
int number = 42;
int* ptr = &number; // ptr, number değişkeninin adresini saklar
int value = *ptr; // value artık 42 değerini içerirDereferans operatörünü, orijinal değişkeni işaretçi üzerinden değiştirmek için de kullanabilirsiniz:
*ptr = 100; // number değerini 100 olarak değiştirir
// ptr üzerinden değiştirmiş olsak bile, number artık 100'dürBu dolaylı erişim, elinizde onlara ait bir işaretçi olduğu sürece, programınızın herhangi bir yerinden değişkenleri okumanıza ve değiştirmenize olanak tanır.
Kendin dene
#include <iostream>
using namespace std;
int main() {
// Giriş değerlerini oku
int initialValue, newValue;
cin >> initialValue;
cin >> newValue;
// TODO: Kodunuzu aşağıya yazın
// 1. temperature değişkenini tanımlayın ve initialValue ile başlatın
// 2. temperature değişkenini işaret eden tempPtr işaretçisini (pointer) oluşturun
// 3. İşaretçi dereferansı kullanarak orijinal değeri yazdırın
// 4. newValue kullanarak işaretçi üzerinden temperature değerini değiştirin
// 5. İşaretçi dereferansı kullanarak yeni değeri 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
1İşaretçiler ve Bellek
İşaretçi Nedir?Adres OperatörüDereference OperatörüNull İşaretçilerİşaretçiler ve Diziler'new' ile Dinamik Bellek'delete' ile Belleği Serbest BırakmaÖzet - İşaretçi Pratiği2Vektörler (Dinamik Diziler)
std::vector'a GirişBir Vektör OluşturmaEleman EklemeElemanlara ErişmeVektör BoyutuFor Döngüsü ile YinelemeAralık Tabanlı For DöngüsüEleman SilmeÖzet - Vektör İşlemleri3Proje: Görev Listesi Aracı
Projeye Genel BakışGörev Ekleme