Avatar ·

ما هو null/nil في C++ وكيفية التعامل معه؟

سؤال: ما هو null/nil في C++ وكيفية التعامل معه؟

زملائي، مرحباً! أنا أنتقل إلى C++ بعد Python وJava ولا أستطيع فهم مفهوم null/nil في هذه اللغة. في Python يوجد None، وفي Java يوجد null، أما في C++ فأجد nullptr وNULL وأيضاً 0 فقط. هل هي نفس الشيء؟ في أي الحالات يتم استخدام كل منها؟

حاولت كتابة هذا الكود:

#include <iostream>\n\nvoid foo(int* ptr) {\n    if (ptr == NULL) {\n        std::cout << \"Pointer is NULL\" << std::endl;\n    }\n}\n\nint main() {\n    int* p = nullptr;\n    foo(p);\n    return 0;\n}

الكود يتم ترجمته، لكنني لست متأكداً من صحته. كما سمعت عن std::optional — هل هذه قصة مختلفة تماماً؟ أم أنها بديل حديث لـ null؟ أتوقع شرحاً واضحاً: أي مما سبق هو \"المؤشر الصفري\" في C++، وكيفية تهيئة المؤشرات بشكل صحيح بـ \"لا شيء\"، وهل يوجد في C++ ما يعادل null من Java/Python للمراجع (وليس المؤشرات)؟ سأكون ممتناً لأمثلة مع nullptr وNULL.