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