NULL ? For in ?



  • Hei leute 2 kleine fragen.

    1. Was bedeutet dieses "NULL" ? ist das die zahl 0 ? oder hat das etwas anderes zu bedeuten ?

    2. Habe mal in einem Video die Schleife "For r in (...)" gesehen ? ich kenne nur doe "For" schleife aber eine "For in" schleife noch nie gesehen

    freue mich über antworten 🙂

    mfg!


  • Mod

    zantes schrieb:

    1. Was bedeutet dieses "NULL" ? ist das die zahl 0 ? oder hat das etwas anderes zu bedeuten ?

    Es ist Null, aber nicht im Sinne der Zahl, sondern im Sinne eines neutralen Sonderwertes für Zeiger. Da hinter Zeigern auch Zahlen stecken, hat es technisch gesehen auch den Zahlenwert 0, aber sollte nicht wie dieser behandelt werden. NULL sollte nur für Zeiger eingesetzt werden. Aber: NULL solltest du überhaupt nicht einsetzen. Das ist ein Relikt aus C und wie man dort Zeiger behandelt. In C++ kannst du auch direkt 0 schreiben, wenn du einen Nullzeiger meinst. Nochmals aber: Auch letzteres ist veraltet. Seit der Standardrevision von 2011 gibt es in C++ mit nullptr ein echtes Nullzeigerliteral, ohne jede Verwirrung, ob das nun Zeiger oder Zahl ist. Dies ist die zu bevorzugende Art und Weise, in C++ Nullzeiger zu handhaben. Sofern du überhaupt jemals in die Verlegenheit kommst, direkt mit Zeigern herum zu hantieren. Normalerweise sollte das nämlich nicht nötig sein.

    2. Habe mal in einem Video die Schleife "For r in (...)" gesehen ? ich kenne nur doe "For" schleife aber eine "For in" schleife noch nie gesehen

    Dann hast du ein Video über eine andere Sprache gesehen.

    Du plenkst.



  • oke danke erstmal zur 1. frage !

    also for in ist eine ander Sprache aber ist eine for schleife ?


  • Mod

    zantes schrieb:

    also for in ist eine ander Sprache aber ist eine for schleife ?

    Mit dem Begriff "for-Schleife" bezeichnet man Schleifen, die über einen gewissen Bereich laufen. Viele Sprachen bieten fertige Schleifenkonstrukte dieser Art an. Oftmals irgendwie verbunden mit dem Schlüsselwort "for". Wie dann die genaue Art und Weise aussieht, wie man die Bereiche angibt, kommt eben auf die Grammatik der Sprache an. C++-Grammatik meidet in der Regel ausgeschriebene Worte (wie "in") und setzt eher auf Sonderzeichen.

    for r in ( bereich )
    

    könnte aus vielen Sprachen stammen, das C++-Äquivalent wäre so etwas wie

    for ( r : bereich )
    


  • Ich danke dir sehr für deine hilfe :)!! danke dir !



  • zantes schrieb:

    2. Habe mal in einem Video die Schleife "For r in (...)" gesehen ? ich kenne nur doe "For" schleife aber eine "For in" schleife noch nie gesehen

    Die Klammern lassen mich an C++/CLI denken.
    https://msdn.microsoft.com/de-de/library/ms177202.aspx



  • SeppJ schrieb:

    for r in ( bereich )
    

    könnte aus vielen Sprachen stammen, das C++-Äquivalent wäre so etwas wie

    for ( r : bereich )
    

    Zu der Pre-C++11 Zeit hatte mindestens Visual Studio 2010 diese Schleife als For-Each oder sogar Range-Based For implementiert.



  • SeppJ schrieb:

    Sofern du überhaupt jemals in die Verlegenheit kommst, direkt mit Zeigern herum zu hantieren. Normalerweise sollte das nämlich nicht nötig sein.

    Das hab ich jetzt hier schon öfters im Forum gelesen. Sind an dieser Stelle den Smart-Pointer gemeint? Allerdings ist ja die Auswahl an Smart-Pointer beim "alten" (C++98) Standard ja doch eher überschaubar (std::auto_ptr).

    Wie löst Du dann eine Methoden-Signatur, die ein Objekt "optional" entgegennimmt. Bei Pointer kann ich einfach ein nullptr übergeben.



  • jb schrieb:

    Wie löst Du dann eine Methoden-Signatur, die ein Objekt "optional" entgegennimmt. Bei Pointer kann ich einfach ein nullptr übergeben.

    In viele Fällen sollte Funktionsüberladung der bessere Weg sein.



  • jb schrieb:

    SeppJ schrieb:

    Sofern du überhaupt jemals in die Verlegenheit kommst, direkt mit Zeigern herum zu hantieren. Normalerweise sollte das nämlich nicht nötig sein.

    Das hab ich jetzt hier schon öfters im Forum gelesen. Sind an dieser Stelle den Smart-Pointer gemeint? Allerdings ist ja die Auswahl an Smart-Pointer beim "alten" (C++98) Standard ja doch eher überschaubar (std::auto_ptr).

    Wie löst Du dann eine Methoden-Signatur, die ein Objekt "optional" entgegennimmt. Bei Pointer kann ich einfach ein nullptr übergeben.

    Wenn die Funktion den Besitz des Pointees nicht übernehmen soll, gar nicht erst an Smartpointers denken, sondern normale Pointer benutzen (bei konstanten Pointees !=NULL geht auch ne Referenz). Funktionsüberladung trotzdem bevorzugen.


Anmelden zum Antworten