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

الإعلان عن المؤشرات

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

الآن بعد أن فهمت ما هي المؤشرات (pointers)، دعنا نتعلم كيفية إنشائها. يتبع التصريح عن متغير مؤشر صيغة محددة تخبر المترجم (compiler) بنوع البيانات التي سيشير إليها المؤشر.

الصيغة الأساسية للإعلان عن مؤشر هي: data_type *pointer_name;

int *ptr;        // يعلن عن مؤشر لعدد صحيح
char *ch_ptr;    // يعلن عن مؤشر لحرف
float *f_ptr;    // يعلن عن مؤشر لعدد عشري

علامة النجمة (*) هي ما يجعل هذا إعلاناً عن مؤشر. فهي تخبر المترجم (compiler) أن هذا المتغير سيقوم بتخزين عنوان ذاكرة، وليس قيمة البيانات الفعلية. عندما تعلن عن int *ptr;، فأنت تقول "ptr هو مؤشر يمكنه تخزين عنوان متغير من نوع عدد صحيح (integer)."

لاحظ أن نوع البيانات الموجود قبل النجمة يحدد نوع البيانات التي سيشير إليها المؤشر. هذا أمر مهم لأن أنواع البيانات المختلفة تشغل مساحات مختلفة في الذاكرة، ويحتاج المترجم (compiler) إلى معرفة هذه المعلومات من أجل إدارة الذاكرة بشكل صحيح.

challenge icon

التحدي

سهل

اكتب برنامجاً بلغة C يوضح الصيغة الصحيحة للإعلان عن المؤشرات. يجب أن يقوم برنامجك بما يلي:

  1. الإعلان عن مؤشر لعدد صحيح باسم int_ptr
  2. الإعلان عن مؤشر لحرف باسم char_ptr
  3. الإعلان عن مؤشر لعدد عشري باسم float_ptr
  4. طباعة عناوين الذاكرة المخزنة في كل مؤشر باستخدام printf مع محدد التنسيق %p

يجب أن يعرض مخرج البرنامج عناوين المؤشرات الثلاثة بالتنسيق التالي:

Integer pointer: [address]
Character pointer: [address]  
Float pointer: [address]

لاحظ أن عناوين الذاكرة الفعلية ستختلف، ولكن يجب أن يتطابق التنسيق والتسميات تماماً كما هو موضح أعلاه.

ورقة مرجعية

للإعلان عن متغير مؤشر (pointer)، استخدم الصيغة: data_type *pointer_name;

int *ptr;        // يعلن عن مؤشر لعدد صحيح
char *ch_ptr;    // يعلن عن مؤشر لحرف
float *f_ptr;    // يعلن عن مؤشر لعدد عشري

تجعل النجمة (*) هذا الإعلان إعلاناً عن مؤشر، مما يخبر المترجم (compiler) أن هذا المتغير سيقوم بتخزين عنوان في الذاكرة. يحدد نوع البيانات الموجود قبل النجمة نوع البيانات التي سيشير إليها المؤشر.

استخدم محدد التنسيق %p مع printf لعرض عناوين المؤشرات.

جرّب بنفسك

#include <stdio.h>

int main() {
    // TODO: قم بالتصريح عن المؤشرات الخاصة بك هنا
    
    
    // TODO: قم بطباعة عناوين المؤشرات باستخدام التنسيق المطلوب
    
    
    return 0;
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow