"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > NULL مقابل NULLPTR: لماذا تم استبدال المؤشر الفارغ C ++؟

NULL مقابل NULLPTR: لماذا تم استبدال المؤشر الفارغ C ++؟

نشر في 2025-02-26
تصفح:353

NULL vs. nullptr: Why Was the C   Null Pointer Replaced?
0x ، استبدال الفرق التقليدية. أثار هذا الاستبدال الفضول ، مما دفع السؤال: لماذا تم تنفيذ هذا التغيير؟ ككلا من "الماكرو" على الطراز C والقيمة الحرفية المشروعة لأنواع المؤشرات. قد يؤدي هذا الغموض إلى الارتباك ، خاصة في مكالمات الوظائف المفرطة. النظر في المثال التالي:

void f (int) ؛ void f (foo *) ؛ F (NULL) ؛ // غامضة ، يمكن إما استدعاء مع إدخال Nullptr ، تم حل هذا الغموض. Nullptr هو نوع مخصص (std :: nullptr_t) الذي يشير صراحة إلى مؤشر فارغ. إنه قابل للتحويل ضمنيًا إلى أي نوع من المؤشر ، مما يضمن دقة التحميل الزائد غير المباشر.

علاوة على ذلك ، يمكن تفسير فارغة على أنها قيمة عدد صحيح ، مما يؤدي إلى أخطاء محتملة. استبدال null مع nullptr القضاء على هذه المشكلة ، وتوفير تمييز أوضح بين قيم المؤشر والأعداد الصحيحة.

مزايا مهمة:

نوع محسّن السلامة:

كما ذكرنا سابقًا ، يمنع نوع Nullptr الصريح التحويلات غير المقصودة إلى الأعداد الصحيحة.
void f(int);
void f(foo *);

f(NULL); // Ambiguous, could be either call
.

بناء جملة متسقة:

يتوافق Nullptr مع اتفاقية مكتبة C القياسية لاستخدام "P" كلاحقة للأنواع والقيم المتعلقة بالمؤشر ، مثل أنواع المؤشرات المتكررة وأنواع المؤشرات الذكية.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3