عامل العنوان (&)
جزء من قسم المنطق وتدفق التنفيذ في رحلة C على Coddy. الدرس 3 من 63.
الآن بعد أن أصبحت قادرًا على تعريف المؤشرات، تحتاج إلى تعلّم كيفية تخزين عنوان ذاكرة فيها فعليًا. يُعد عامل الحصول على العنوان (&) المفتاحَ للحصول على عنوان ذاكرة أي متغيّر.
عندما تضع العامل & أمام اسم متغير، فإنه يُرجع عنوان الذاكرة الذي يُخزَّن فيه ذلك المتغير. فكّر في الأمر كما لو أنك تسأل: «أين يعيش هذا المتغير في الذاكرة؟»
int age = 25;
int *ptr;
ptr = &age; // خزّن عنوان 'age' في 'ptr'في هذا المثال، يمنحنا &age عنوان الذاكرة للمتغير age. ثم نُسنِد هذا العنوان إلى المؤشر ptr الخاص بنا. الآن يشير ptr إلى المتغير age.
عامل أخذ العنوان أساسي لأنه حلقة الوصل بين المتغيرات العادية والمؤشرات. وبدونه، لن تتمكن من إخبار المؤشر إلى أي متغير يشير. تذكّر أن أنواع البيانات يجب أن تتطابق - فلا يمكنك إسناد عنوان عدد صحيح إلا إلى مؤشر مُعلن للأعداد الصحيحة.
التحدي
سهلاكتب برنامجًا بلغة C يوضّح استخدام عامل أخذ العنوان لربط المتغيرات بالمؤشرات. يجب أن يقوم برنامجك بما يلي:
- التصريح عن متغير صحيح باسم
numberوتهيئته بالقيمة 42 - التصريح عن متغير محرف باسم
letterوتهيئته بالقيمة 'X' - التصريح عن مؤشر إلى عدد صحيح باسم
num_ptr - التصريح عن مؤشر إلى محرف باسم
char_ptr - استخدام عامل أخذ العنوان لإسناد عنوان
numberإلىnum_ptr - استخدام عامل أخذ العنوان لإسناد عنوان
letterإلىchar_ptr - طباعة العناوين المخزنة في كلا المؤشرين باستخدام
printfمع محدد التنسيق%p
يجب أن يعرض ناتجك عناوين المؤشرات بالتنسيق التالي:
Address of number: [address]
Address of letter: [address]ستختلف عناوين الذاكرة الفعلية بين عمليات تشغيل البرنامج، ولكن يجب أن يتطابق التنسيق والتسميات تمامًا مع ما هو موضح أعلاه. [address] هو عنصر نائب للعنوان المطبوع؛ لا تطبع الأقواس المربعة.
جرّب بنفسك
#include <stdio.h>
int main() {
// TODO: اكتب الكود الخاص بك هنا
// 1. أعلن ومهّئ المتغيرات
// 2. أعلن عن المؤشرات
// 3. استخدم عامل العنوان لتعيين العناوين
// 4. اطبع العناوين باستخدام التنسيق الموضح
return 0;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسيةتدرّب بنفسك: مترجم C عبر الإنترنت