ما هو 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.