الإعلان عن المؤشرات
جزء من قسم 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) إلى معرفة هذه المعلومات من أجل إدارة الذاكرة بشكل صحيح.
التحدي
سهلاكتب برنامجاً بلغة C يوضح الصيغة الصحيحة للإعلان عن المؤشرات. يجب أن يقوم برنامجك بما يلي:
- الإعلان عن مؤشر لعدد صحيح باسم
int_ptr - الإعلان عن مؤشر لحرف باسم
char_ptr - الإعلان عن مؤشر لعدد عشري باسم
float_ptr - طباعة عناوين الذاكرة المخزنة في كل مؤشر باستخدام
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;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية