معامل العنوان (Address-Of)
جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 2 من 56.
الآن بعد أن فهمت ما هو المؤشر (pointer)، عليك أن تتعلم كيفية الحصول فعلياً على عنوان الذاكرة لمتغير ما. وهنا يأتي دور عامل "العنوان لـ" (address-of operator) (&).
يُوضع عامل استخراج العنوان & قبل اسم المتغير لاسترداد عنوانه في الذاكرة. عندما تستخدم &variable_name، فإنه يعيد الموقع في الذاكرة حيث يتم تخزين ذلك المتغير.
int number = 42;
int* ptr = &number; // ptr يخزن الآن عنوان numberفي هذا المثال، &number يحصل على عنوان الذاكرة للمتغير number، ونقوم بتعيين هذا العنوان لمؤشرنا ptr. المؤشر لا يحتوي على القيمة 42 - بل يحتوي على العنوان الذي تم تخزين القيمة 42 فيه.
هذا الارتباط بين المتغير والمؤشر الخاص به ضروري للتعامل مع الذاكرة بشكل مباشر. بمجرد حصولك على مؤشر يخزن عنواناً، يمكنك استخدامه للوصول إلى المتغير الأصلي أو تعديله بشكل غير مباشر.
التحدي
سهلقم بإنشاء برنامج يوضح عامل العنوان (address-of operator) من خلال العمل مع متغير صحيح ومؤشر.
قم بالتصريح عن متغير صحيح باسم score وقم بتهيئته بالقيمة 85.
قم بإنشاء مؤشر باسم scorePtr يخزن عنوان الذاكرة للمتغير score باستخدام عامل العنوان.
اطبع عنوان الذاكرة المخزن في المؤشر باستخدام التنسيق التالي:
Address: [memory address]سيتم عرض عنوان الذاكرة بتنسيق سداسي عشري (مثل 0x7fff5fbff6ac)، وهي الطريقة التي تعرض بها لغة C++ عناوين الذاكرة عادةً.
ورقة مرجعية
يُستخدم عامل استخراج العنوان & للحصول على عنوان الذاكرة لمتغير ما:
int number = 42;
int* ptr = &number; // ptr يخزن عنوان numberعندما تستخدم &variable_name، فإنه يعيد الموقع في الذاكرة حيث يتم تخزين ذلك المتغير. يحتوي المؤشر على العنوان، وليس القيمة الفعلية للمتغير.
جرّب بنفسك
#include <iostream>
using namespace std;
int main() {
// TODO: اكتب كودك أدناه
return 0;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المؤشرات والذاكرة
ما هو المؤشر؟معامل العنوان (Address-Of)معامل الوصول للقيمة (Dereference)المؤشرات الفارغة (Null Pointers)المؤشرات والمصفوفاتالذاكرة الديناميكية باستخدام 'new'تحرير الذاكرة باستخدام 'delete'مراجعة - تمارين على المؤشرات2المتجهات (المصفوفات الديناميكية)
مقدمة إلى std::vectorإنشاء Vectorإضافة العناصرالوصول إلى العناصرحجم الـ Vectorالتكرار باستخدام For Loopالـ Range-Based For Loopإزالة العناصرملخص - عمليات الـ Vector