Kurze Frage zu einer Funktion



  • Hallo, was ist besser:

    Bsp. 1

    void func ( char *data , int nr )
    {
    
    // do something 
    
    }
    

    Bsp. 2

    void func ( char *data="0" , int nr )
    {
    
    // do something 
    
    }
    

    Eigentlich müsste doch Bsp. 2 korrekt sein oder?
    Weil Pointer ja immer initialisiert sein sollten.



  • Abgesehen davon, dass Beispiel 2 überhaupt nicht kompiliert, ist es auch Quatsch. So ein "pseudo-definiertes" Verhalten macht nur ärger und ist komplett sinnlos. Nimm die erste Variante.


  • Mod

    Oder nimm keinen Pointer, sondern eine Referenz oder einen String (je nachdem, ob du hier von der Semantik her einen char by-reference übergeben möchtest oder ob du eine Zeichenkette möchtest), dann können solche Probleme gar nicht erst auftreten.



  • Ich bin ganz cooky451s Meinung. Abgesehen davon wird der Pointer bei Bsp.1 doch auch initialisiert. Immerhin musst du bei Verwendung dieser Funktion ja ein entsprechendes Argument übergeben, ansonsten bekommst du einen Fehler um die Ohren.



  • Und für den Fall, dass nur Lesezugriff erlaubt ist (z.B. bei Stringliteralen), solltest du const char* statt char* verwenden.


Log in to reply