القائمة الرئيسية

الصفحات

أخبار الرياضة

المؤشرات في سي بلس بلس | ++Pointer c

تتم "تعريف المؤشرات في لغة c++"  بشكل مناسب: فــ المؤشراتPointers تشير إلى مواقع في الذاكرة. فكر في صف من صناديق الودائع الآمنة بأحجام مختلفة في أحد البنوك المحلية. سيكون لكل صندوق إيداع آمن رقم مرتبط به حتى يتمكن الصراف من البحث عنه بسرعة. هذه الأرقام تشبه عناوين الذاكرة للمتغيرات.

المؤشّرات في سي بلس بلس
إن المؤشر في عالم صناديق ودائع الأمان سيكون ببساطة أي شيء يخزن رقم صندوق ودائع آمن آخر. ربما لديك عم ثري قام بتخزين الأشياء الثمينة في صندوق ودائع الأمان الخاص به ، لكنه قرر وضع الموقع الحقيقي في صندوق ودائع آمن آخر ، أصغر حجمًا ، والذي قام فقط بتخزين بطاقة مع رقم الصندوق الكبير مع المجوهرات الحقيقية. سوف يقوم صندوق الإيداع الآمن مع البطاقة بتخزين موقع صندوق آخر ؛ سيكون يعادل المؤشر. في الحاسوب.

فائدة المؤشرات C++ pointers

من فائدة المؤشرات Pointers يمكن أن تجعل بعض الأشياء أسهل بكثير ، وتساعد المؤشرات في البرمجة على تحسين كفاءة برنامجك ، وحتى تسمح لك بمعالجة كميات غير محدودة من البيانات. على سبيل المثال ، يعد استخدام المؤشرات إحدى الطرق لتعديل دالة تم تمرير متغير إليها. من الممكن أيضًا استخدام المؤشرات لتخصيص الذاكرة ديناميكيًا ، مما يعني أنه يمكنك كتابة برامج يمكنها التعامل مع كميات غير محدودة تقريبًا من البيانات أثناء التنقل - لا تحتاج إلى معرفة ، عند كتابة البرنامج ، مقدار الذاكرة التي بحاجة إلى. واو ، هذا رائع. في الواقع ، إنه رائع جدًا ، كما سنرى في بعض الدروس التالية. في الوقت الحالي ، دعنا نتعامل مع المؤشرات الأساسية وكيفية استخدامها.

شرح المؤشرات pointers والمتغيرات في سي بلس بلس

الشيء الرائع في المؤشرات و المتغيرات في البرمجة هو أنه بمجرد أن يمكنك التحدث عن عنوان متغير ، ستتمكن عندئذٍ من الانتقال إلى هذا العنوان واسترداد البيانات المخزنة فيه. إذا كان لديك جزء كبير من البيانات التي تريد تمريرها إلى دالة ، فمن السهل جدًا تمرير موقعها إلى الدالة بدلا من نسخ كل عنصر من عناصر البيانات! علاوة على ذلك ، إذا كنت بحاجة إلى المزيد من الذاكرة لبرنامجك ، يمكنك طلب المزيد من الذاكرة من النظام - كيف يمكنك "استعادة" تلك الذاكرة؟ يخبرك النظام بمكان وجوده في الذاكرة ؛ وهذا يعني أنك تحصل على عنوان ذاكرة مرة أخرى. وتحتاج إلى مؤشرات لتخزين عنوان الذاكرة.

ملاحظة حول المصطلحات:

يمكن أن تشير كلمة pointers إما إلى عنوان الذاكرة نفسه ، أو إلى متغير يخزن عنوان الذاكرة. عادة ، لا يكون التمييز مهمًا حقًا: إذا قمت بتمرير متغير المؤشر إلى دالة ، فأنت تمرر القيمة المخزنة في المؤشر - عنوان الذاكرة. عندما أريد التحدث عن عنوان ذاكرة ، فسأشير إليه على أنه عنوان ذاكرة ؛ عندما أريد متغيرًا يخزن عنوان الذاكرة ، سأسميه مؤشرًا. عندما يخزن متغير عنوان متغير آخر ، سأقول أنه "يشير إلى" هذا المتغير.

بناء الجملة في المؤشرات

تتطلب المؤشرات قليلا من بناء الجملة الجديد لأنه عندما يكون لديك مؤشر ، فأنت بحاجة إلى القدرة على طلب كل من موقع الذاكرة الذي يخزنه والقيمة المخزنة في موقع الذاكرة ذلك. علاوة على ذلك ، نظرًا لأن المؤشرات خاصة إلى حد ما ، فأنت بحاجة إلى إخبار المترجم عندما تعلن عن متغير المؤشر أن المتغير هو مؤشر ، وإخبار المترجم بنوع الذاكرة التي يشير إليها يظهر تعريف المؤشر كما يلي.
<variable_type> *<name>; 
على سبيل المثال ، يمكنك التصريح عن مؤشر يخزن عنوان عدد صحيح باستخدام البنية التالية:
int *points_to_integer
لاحظ استخدام *. هذا هو المفتاح لإعلان المؤشر. إذا قمت بإضافته مباشرة قبل اسم المتغير ، فسيعلن المتغير على أنه مؤشر. مسودة ثانوية: إذا أعلنت عن عدة مؤشرات على نفس السطر ، يجب أن تسبق كل منها بعلامة نجمة:
one pointer, one regular int
int *pointer1, nonpointer1;
 
// two pointers
int *pointer1, *pointer2
كما ذكرت ، هناك طريقتان لاستخدام المؤشر للوصول إلى المعلومات: من الممكن جعله يعطي العنوان الفعلي لمتغير آخر. للقيام بذلك ، ما عليك سوى استخدام اسم المؤشر بدون *. ومع ذلك ، للوصول إلى موقع الذاكرة الفعلي والقيمة المخزنة هناك ، استخدم *. الاسم التقني للقيام بذلك هو إلغاء الإشارة إلى المؤشر ؛ في الجوهر ، فأنت تأخذ الإشارة إلى بعض عناوين الذاكرة وتتبعها ، لاسترداد القيمة الفعلية. قد يكون من الصعب تتبع متى يجب إضافة علامة النجمة. تذكر أن الاستخدام الطبيعي للمؤشر هو تخزين عنوان الذاكرة ؛ لذلك عند استخدام المؤشر:
call_to_function_expecting_memory_address(pointer);
ثم يقيم على العنوان. يجب عليك إضافة شيء إضافي ، علامة النجمة ، لاسترداد القيمة المخزنة في العنوان. ربما ستفعل ذلك كثيرًا. ومع ذلك ، من المفترض أن يخزن المؤشر نفسه عنوانًا ، لذلك عند استخدام المؤشر العاري ، يمكنك استعادة هذا العنوان.
اقراء ايضآ

تعليقات