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

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

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

الآن بعد أن أصبح بإمكانك الحصول على مؤشر لمتغير، تحتاج إلى تعلم كيفية الوصول إلى القيمة الموجودة في عنوان الذاكرة هذا وتعديلها. هنا يصبح عامل إلغاء المرجعية (*) ضروريًا.

يُستخدم عامل إلغاء المرجعية (dereference operator) * للوصول إلى القيمة المخزنة في عنوان الذاكرة الذي يشير إليه المؤشر. عندما تضع * قبل متغير المؤشر، فإنه "يتبع" العنوان ويعطيك القيمة الفعلية المخزنة هناك.

int number = 42;
int* ptr = &number;  // ptr يخزن عنوان number
int value = *ptr;    // value يحتوي الآن على 42

يمكنك أيضاً استخدام عامل إلغاء المرجعية (dereference operator) لتعديل المتغير الأصلي من خلال المؤشر. عندما تقوم بتعيين قيمة جديدة لـ *ptr، فأنت في الواقع تقوم بتغيير القيمة المخزنة في ذلك الموقع من الذاكرة:

*ptr = 100;  // يغير number إلى 100
// قيمة number الآن هي 100، على الرغم من أننا قمنا بتعديلها من خلال ptr

هذا الوصول غير المباشر هو ما يجعل المؤشرات قوية للغاية - حيث يمكنك قراءة وتعديل المتغيرات من أي مكان في برنامجك طالما أن لديك مؤشراً إليها.

challenge icon

التحدي

سهل

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

سيتم توفير المدخلات التالية:

  • عدد صحيح يمثل القيمة الأولية لمتغير
  • عدد صحيح يمثل القيمة الجديدة التي سيتم تعيينها عبر المؤشر

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

  1. الإعلان عن متغير صحيح باسم temperature وتهيئته بقيمة المدخل الأول
  2. إنشاء مؤشر باسم tempPtr يشير إلى المتغير temperature
  3. طباعة القيمة الأصلية عن طريق إلغاء مرجعية المؤشر
  4. استخدام عامل إلغاء المرجعية لتغيير قيمة temperature إلى قيمة المدخل الثاني من خلال المؤشر
  5. طباعة القيمة الجديدة عن طريق إلغاء مرجعية المؤشر مرة أخرى

استخدم تنسيق المخرجات الدقيق التالي:

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

ورقة مرجعية

يُستخدم عامل إلغاء المرجعية (dereference operator) * للوصول إلى القيمة المخزنة في عنوان الذاكرة الذي يشير إليه المؤشر:

int number = 42;
int* ptr = &number;  // ptr يخزن عنوان number
int value = *ptr;    // value يحتوي الآن على 42

يمكنك أيضاً استخدام عامل إلغاء المرجعية لتعديل المتغير الأصلي من خلال المؤشر:

*ptr = 100;  // يغير number إلى 100
// number الآن هو 100، على الرغم من أننا قمنا بتعديله من خلال ptr

يسمح لك هذا الوصول غير المباشر بقراءة وتعديل المتغيرات من أي مكان في برنامجك طالما أن لديك مؤشراً إليها.

جرّب بنفسك

#include <iostream>
using namespace std;

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

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

جميع دروس Logic & Flow