Speicheradressen von Pointer



  • @docshoe sagte in Speicheradressen von Pointer:

    int i = j = k = 0;

    Seit wann ist das denn erlaubt (also sofern jund knicht schon vorher definiert wurden)?



  • @th69 Hast natürlich recht. Wie gesagt, ich schreibe sowas nicht und habe mich eher schlecht als recht an Code vom Kollegen erinnert. Scheint heute mein Schludrigkeitstag zu sein, zwei Postings, zwei Böcke 😉
    Hab´s oben gefixt.



  • @docshoe

    Kanst gleich noch was fixen:

    a, b und c sind nicht definiert. Richtig ist

    bool some_function( int& refA, int& refB, int* refC );
    
    void my_function()
    {
       int i = 0, j = 0, k = 0;
       if( some_function( i, j, &k ) )
       {
       }
    }
    

    Ich persönlich schenke mir die Initialisierung, wenn die Variable gleich im nächsten Statement einen Wert erhält. Ich denke nicht, daß man hier päpstlicher wie der Papst sein muß. Aber was ich nie machen würde, die ersten zwei Variablen als Referenz und die dritte als Zeiger zu übergeben.

    VG Martin



  • @mgaeckler
    Heute ist mein Tag! 100% der relevanten Beiträge vergurkt.
    Ich leg mich jetzt hin, Gute Nacht und bis Morgen.

    Die Funktion some_function ist nur das worst-case Beispiel. Wenn man 3rd Party Libraries benutzt kann einem alles begegnen.
    Ich habe mir angewöhnt ausnahmslos alle Variablen zu initialisieren, selbst wenn es ein Output-Parameter einer Funktion ist und in der Funktion überschrieben wird. Wüsste jetzt auch keinen Fall, wo mir das um die Ohren geflogen ist, wenn ich´s nicht gemacht habe, aber damit halte ich mich an das Prinzip alles zu initialisieren. Mag übervorsichtig/gründlich sein, schadet aber auf keinen Fall.



  • @docshoe Ja schaden tut's nicht außer daß vieleicht die Funktion ein paar Nanosekunden länger braucht. 😈



  • @hustbaer sagte in Speicheradressen von Pointer:

    Wissen alleine reicht nicht, man muss sowas auch trainieren.

    Quatsch. Sowas weiß man einfach und dann macht man wie man Lust hast. Mehrere Variablen in einer Zeile zu definieren ist keine Königsdisziplin. Diese dann zu lesen genauso wenig. Wird alles noch im gleichen Kapitel abgehakt, hoff ich doch mal.

    @hustbaer sagte in Speicheradressen von Pointer:

    Genau so wie C++ Style Casts ganz klar besser sind als C Style Casts. "Ich kann das genau so gut lesen" ist mMn. auch das typische Argument von Leuten die wissen dass sie falsch liegen, sich (und anderen) aber einreden wollen dass es nicht so ist.

    Na klar. Dann lieg ich halt falsch und möchte euch allen wissentlich dem Falschen belehren. Fick dich. *

    Ich benutze dennoch C-Casts. Hab früher auch mal static_cast<> und anderes genommen, mach das jetzt aber nicht mehr, vermutlich auch nur um euch damit noch auf den Senkel zu gehen.

    stream.write(reinterpret_cast<char*>(&value), sizeof(value));
    vs.
    stream.write((char*)&value, sizeof(value));

    Wie in ganz vielen Bereichen der Programmierung kann man nicht immer mit allem bedenkenlos umgehen. Zumals in den Sprachen C und C++ sollte der Programmierer wissen was er tut. Und wenn der dann da angelangt und vernünftig programmieren kann, dann ist es egal, wie der in seinem Code rumcastet. Anders sieht das natürlich aus, wenn man gemeinsam an einem Projekt arbeitet, da sollte man sich dann wohl an eine Richtlinie halten.
    ich bin halt nicht der Befürwörter von C++-Style-Cast, will sie aber auch keinem ausreden, ehrlich. Alles was du brauchst um herauszufinden worum es in diesem Cast geht kannst du auch aus dem Context rauslesen. Kannst du. Kannst du sehr wohl.



  • @spiri sagte in Speicheradressen von Pointer:

    @hustbaer sagte in Speicheradressen von Pointer:

    Wissen alleine reicht nicht, man muss sowas auch trainieren.

    Quatsch. Sowas weiß man einfach und dann macht man wie man Lust hast. Mehrere Variablen in einer Zeile zu definieren ist keine Königsdisziplin. Diese dann zu lesen genauso wenig. Wird alles noch im gleichen Kapitel abgehakt, hoff ich doch mal.

    @hustbaer sagte in Speicheradressen von Pointer:

    Genau so wie C++ Style Casts ganz klar besser sind als C Style Casts. "Ich kann das genau so gut lesen" ist mMn. auch das typische Argument von Leuten die wissen dass sie falsch liegen, sich (und anderen) aber einreden wollen dass es nicht so ist.

    Na klar. Dann lieg ich halt falsch und möchte euch allen wissentlich dem Falschen belehren. Fick dich. *

    Ich benutze dennoch C-Casts. Hab früher auch mal static_cast<> und anderes genommen, mach das jetzt aber nicht mehr, vermutlich auch nur um euch damit noch auf den Senkel zu gehen.

    stream.write(reinterpret_cast<char*>(&value), sizeof(value));
    vs.
    stream.write((char*)&value, sizeof(value));

    Wie in ganz vielen Bereichen der Programmierung kann man nicht immer mit allem bedenkenlos umgehen. Zumals in den Sprachen C und C++ sollte der Programmierer wissen was er tut. Und wenn der dann da angelangt und vernünftig programmieren kann, dann ist es egal, wie der in seinem Code rumcastet. Anders sieht das natürlich aus, wenn man gemeinsam an einem Projekt arbeitet, da sollte man sich dann wohl an eine Richtlinie halten.
    ich bin halt nicht der Befürwörter von C++-Style-Cast, will sie aber auch keinem ausreden, ehrlich. Alles was du brauchst um herauszufinden worum es in diesem Cast geht kannst du auch aus dem Context rauslesen. Kannst du. Kannst du sehr wohl.

    So viel Blödsinn in einem einzigen Posting...
    C-casts verhalten sich zudem noch anders als C++ cast, sie machen keine Gültigkeitsüberprüfung und verwandeln dir ohne mit der Wimper zu zucken Äpfel in Birnen. Das schreit geradezu nach Problemen. Aber was schreib ich hier eigentlich, ist doch sowieso sinnlos. Und ich wollte mich doch hinlegen...



  • @spiri sagte in Speicheradressen von Pointer:

    Fick dich. *

    Wenn Du mit der Pupertät fertig bist, dann schau hier wieder rein.

    VG


  • Gesperrt

    @spiri sagte in Speicheradressen von Pointer:

    Ich benutze dennoch C-Casts. Hab früher auch mal static_cast<> und anderes genommen,

    Geht mir ähnlich. C++-Casts sind einfach hässlich. Nebenbei bemerkt: wer viel casten muss, macht irgend etwas anderes grundsätzlich falsch. Ich caste manchmal Pointer in void* und zurück. Aber das war's auch schon.



  • @spiri
    Ui. Jetzt hast du mich aber voll belehrt und ich bin voll beeindruckt von deiner weisen Weisheit.


Anmelden zum Antworten