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.


Log in to reply