Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

معامل الوصول للقيمة (Dereference)

جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 3 من 56.

الآن بعد أن أصبحت قادرًا على الحصول على pointer إلى variable، تحتاج إلى تعلم كيفية الوصول إلى القيمة الموجودة في عنوان الذاكرة ذاك وتعديلها. هنا يبرز دور معامل dereference (المتمثل في *) والذي يُعد أمرًا أساسيًا.يُستخدم معامل `dereference` * للوصول إلى القيمة المخزنة في الـ memory `address` التي يشير (`pointing`) إليها الـ `pointer`. وعندما تضع * قبل `pointer` `variable`، فإنه "يتتبع" الـ `address` ويعطيك القيمة الفعلية المخزنة هناك.تذكر أن عامل العنوان (&) يُستخدم للحصول على عنوان الذاكرة لمتغير، بينما يُستخدم عامل إلغاء الإشارة (*) للوصول إلى القيمة عند ذلك العنوان.
int number = 42;
int* ptr = &number;  // ptr يخزن عنوان number
int value = *ptr;    // value يحتوي الآن على 42
يمكنك أيضًا استخدام معامل إلغاء الإشارة (dereference) لتعديل المتغير الأصلي (original) من خلال المؤشر (pointer). عندما تقوم بتعيين قيمة جديدة لـ *ptr، فأنت في الواقع تقوم بتغيير القيمة المخزنة في ذلك الموقع من الذاكرة:
*ptr = 100;  // يغير number إلى 100
// number أصبح الآن 100، حتى وإن عدلناه من خلال ptr
هذا الوصول غير المباشر هو ما يجعل المؤشرات (pointers) قوية جداً - يمكنك قراءة التعديل على المتغيرات من أي مكان في برنامجك طالما أن لديك pointer يُشير إليها.
challenge icon

التحدي

سهل

قم بإنشاء برنامج يوضح كيفية استخدام معامل إلغاء المرجعية (dereference) لتعديل قيمة متغير من خلال pointer.

سيتم تقديم الـ input التالي:

  • عدد صحيح يمثل القيمة الأولية للمتغير
  • عدد صحيح يمثل القيمة الجديدة المراد تعيينها من خلال الـ pointer

يجب على برنامجك أن يقوم بما يلي:

  1. Declare متغير من نوع integer باسم temperature و initialize له بقيمة الـ input الأولى
  2. Create pointer باسم tempPtr points إلى المتغير temperature
  3. Print القيمة الـ Original عن طريق dereference للـ pointer
  4. استخدم معامل dereference لـ Change قيمة temperature إلى قيمة الـ input الثانية through الـ pointer
  5. Print القيمة الـ New عن طريق dereference للـ pointer مرة أخرى

استخدم صيغة المخرجات المحددة التالية تمامًا:

Original value: [original value]
New value: [new value]

جرّب بنفسك

#include <iostream>
using namespace std;

int main() {
    // اقرأ قيم الإدخال
    int initialValue, newValue;
    cin >> initialValue;
    cin >> newValue;
    
    // TODO: اكتب الكود الخاص بك أدناه
    // 1. أعلن عن متغير temperature وقم بتهيئته بـ initialValue
    // 2. أنشئ المؤشر tempPtr الذي يشير إلى temperature
    // 3. Print original value using pointer dereference
    // 4. غيّر قيمة temperature من خلال المؤشر باستخدام newValue
    // 5. اطبع القيمة الجديدة باستخدام فك مرجع المؤشر
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow