Avatar ·

Was ist null/nil in C++ und wie arbeitet man damit?

Frage: Was ist null/nil in C++ und wie arbeitet man damit?

Hallo Kollegen! Ich wechsle von Python und Java zu C++ und kann das Konzept von null/nil in dieser Sprache nicht ganz verstehen. In Python gibt es None, in Java null, und in C++ treffe ich auf nullptr, NULL und einfach 0. Ist das dasselbe? In welchen Fällen verwendet man was?

Ich habe versucht, solchen Code zu schreiben:

#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}

Der Code kompiliert, aber ich bin nicht sicher, ob das richtig ist. Ich habe auch von std::optional gehört – ist das eine ganz andere Geschichte? Oder ist das ein moderner Ersatz für null? Ich erwarte eine klare Erklärung: was von dem Genannten