Pointer != NULL : C ? C++



  • Das ist schon richtig, aber bei 0 erwartet auch niemand, dass es sich um einen Zeiger handelt.



  • seldon schrieb:

    Das ist schon richtig, aber bei 0 erwartet auch niemand, dass es sich um einen Zeiger handelt.

    Außer, wenn man 0 mit einem Zeiger vergleicht. 😃


  • Mod

    tja schrieb:

    seldon schrieb:

    Das ist schon richtig, aber bei 0 erwartet auch niemand, dass es sich um einen Zeiger handelt.

    Außer, wenn man 0 mit einem Zeiger vergleicht. 😃

    Deshalb schreibt man ja auch oft if (pointer) ... statt explizit zu vergleichen.

    Und so schließt sich der Kreis 😃 .



  • Ich mische NULL, 0 und nullptr wild durch, um zu zeigen, dass ich kapiert habe, dass es egal ist. Leserlichkeit finde ich bei allen drein gleich gut oder schlecht.



  • Eisflamme schrieb:

    Ich mische NULL, 0 und nullptr wild durch, um zu zeigen, dass ich kapiert habe, dass es egal ist. Leserlichkeit finde ich bei allen drein gleich gut oder schlecht.

    Der C++0x nullptr ist nicht das gleiche, denn er behebt ein paar praktische und konzeptionelle Bugs, die nur bei NULL und 0 auftreten!

    mfg, NRWsoft



  • Eisflamme schrieb:

    Ich mische NULL, 0 und nullptr wild durch, um zu zeigen, dass ich kapiert habe, dass es egal ist.

    [ ] Du erkennst den Sinn von Code Guidelines
    [ ] Du verstehst die Unterschiede zwischen den drei Varianten
    [ ] Du siehst die Unsinnigkeit des Vergleichs auf 0 in Bedinungen
    [ ] Du hast ein minimales Ästhetikbewusstsein
    [X] Du wühlst dich täglich durch grottenschlechten (=eigenen) Code



  • Ohh, man, ihr seid echt zuckersüß... 🙂
    Ihr diskutiert über mehrere Seiten, ob man in C++ "Pointer != NULL" schreibt. Sogar Assembler-Code wird zu Rate gezogen 😉
    Ich sage x, es ist Geschmackssache. Und auch wenn es weh tut, C++ ist nur ein besseres C (so sollte man es auch benutzen). 😉



  • Exhumed schrieb:

    Ich sage x, es ist Geschmackssache.

    Nein, nullptr ist die Zukunft. Sobald C++0x Standard ist, sollte man nicht mehr 0 oder NULL benutzen

    mfg, NRWsoft



  • NRWsoft schrieb:

    Nein, nullptr ist die Zukunft. Sobald C++0x Standard ist, sollte jeder gesteinigt werden, der noch 0 oder NULL benutzt.

    ...gut, damit kann ich mich anfreunden...ich meine mit dem gesteinigt werden... 🙂 nee, hast schon recht, das würde die Diskussion ad absurdum führen... 😉



  • checklist schrieb:

    Eisflamme schrieb:

    Ich mische NULL, 0 und nullptr wild durch, um zu zeigen, dass ich kapiert habe, dass es egal ist.

    [ ] Du erkennst den Sinn von Code Guidelines
    [ ] Du verstehst die Unterschiede zwischen den drei Varianten
    [ ] Du siehst die Unsinnigkeit des Vergleichs auf 0 in Bedinungen
    [ ] Du hast ein minimales Ästhetikbewusstsein
    [X] Du wühlst dich täglich durch grottenschlechten (=eigenen) Code

    Was geht denn mit nullptr was mit NULL oder 0 nicht geht in C++ 98+?



  • Exhumed schrieb:

    Ohh, man, ihr seid echt zuckersüß... 🙂
    Ihr diskutiert über mehrere Seiten, ob man in C++ "Pointer != NULL" schreibt. Sogar Assembler-Code wird zu Rate gezogen 😉

    Das dachte ich mir auch grade. Ich werde sowas nie verstehen. Wenn ich "ptr == NULL" schreiben will dann tu ichs einfach weils an der Stelle nötig ist :D.



  • Hallo Eisflamme,

    bei überladenen Funktionen, z.B.

    void do_it(const void *);
    void do_it(int);
    

    ist der Aufruf mittels "do_it(0)" bzw. "do_it(NULL)" nicht eindeutig, während "do_it(nullptr)" dann eindeutig die erste Funktion aufruft.



  • Ok, stimmt, danke. 🙂



  • Eisflamme schrieb:

    Was geht denn mit nullptr was mit NULL oder 0 nicht geht in C++ 98+?

    nullptr ist typsicher und nicht in beliebige integrale Typen konvertierbar. Man hat damit effektiv ein Literal für Nullzeiger, was bisher nicht möglich war.

    Und alle Möglichkeiten zu mischen, wäre auch schlecht, wenn sie das gleiche bedeuteten, siehe checklist.



  • Okay, verstanden. 🙂

    Und nochmal: Natürlich mische ich so was nicht, ich fand nur die Diskussion... ... interessant. 🙄


Anmelden zum Antworten