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

المؤشرات الفارغة (Null Pointers)

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

عندما تقوم بالتصريح عن مؤشر (pointer)، فإنه لا يشير تلقائيًا إلى أي شيء ذي معنى. يحتوي المؤشر غير المهيأ على عناوين ذاكرة عشوائية، مما قد يؤدي إلى أخطاء جسيمة إذا حاولت استخدامه. وهنا تبرز أهمية المؤشرات الفارغة (null pointers) كعنصر أساسي للبرمجة الآمنة.

المؤشر الفارغ (null pointer) هو مؤشر يشير صراحةً إلى لا شيء. في لغة ++C الحديثة، يمكنك إنشاء مؤشر فارغ عن طريق تهيئته بـ nullptr:

int* ptr = nullptr;  // ptr هو الآن مؤشر فارغ

تشير الكلمة المفتاحية nullptr إلى أن المؤشر لا يشير إلى أي موقع ذاكرة صالح. وهذا أكثر أماناً بكثير من ترك المؤشر غير مهيأ، لأنه يمكنك التحقق مما إذا كان المؤشر فارغاً قبل محاولة الوصول إلى القيمة التي يشير إليها (dereference).

قبل استخدام أي مؤشر، يجب عليك التحقق من أنه ليس فارغاً (null) باستخدام جملة if بسيطة:

if (ptr != nullptr) {
    // من الآمن استخدام *ptr هنا
    int value = *ptr;
}

تمنع هذه الممارسة برنامجك من الانهيار بسبب الوصول إلى مواقع ذاكرة غير صالحة. قم دائمًا بتهيئة المؤشرات إلى nullptr عند التصريح عنها، وتحقق من القيمة الفارغة قبل إلغاء المرجعية.

challenge icon

التحدي

سهل

قم بإنشاء برنامج يوضح الاستخدام الآمن للمؤشرات (pointers) من خلال التحقق من المؤشرات الفارغة (null pointers) قبل إلغاء مرجعيتها (dereferencing).

سيتم توفير المدخلات التالية:

  • سلسلة نصية ستكون إما "valid" أو "null"

يجب على برنامجك القيام بما يلي:

  1. الإعلان عن متغير صحيح (integer) باسم data وتهيئته بالقيمة 42
  2. الإعلان عن مؤشر باسم ptr
  3. إذا كانت المدخلات "valid"، فقم بتعيين عنوان data إلى ptr
  4. إذا كانت المدخلات "null"، فقم بتعيين nullptr إلى ptr
  5. استخدم جملة if للتحقق مما إذا كان ptr ليس فارغاً قبل محاولة استخدامه
  6. إذا لم يكن المؤشر فارغاً، فقم بطباعة القيمة التي يشير إليها
  7. إذا كان المؤشر فارغاً، فقم بطباعة رسالة أمان

استخدم تنسيق المخرجات الدقيق التالي:

Value: [value]

بالنسبة للمؤشرات الفارغة، استخدم هذا التنسيق:

Pointer is null - cannot dereference

جرّب بنفسك

#include <iostream>
#include <string>
using namespace std;

int main() {
    // قراءة المدخلات
    string input;
    cin >> input;
    
    // التصريح عن متغير البيانات
    int data = 42;
    
    // مهام: اكتب الكود الخاص بك هنا
    // - التصريح عن مؤشر باسم ptr
    // - التحقق من المدخلات وتعيين القيمة المناسبة لـ ptr
    // - استخدام جملة if للتحقق من المؤشر واستخدامه بأمان
    
    return 0;
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow