sizeof(array)



  • Hallo !

    Bei dem Code...

    void bla(bool arrayParam[7])
    {
      bool arrayIntern[7];
      memcpy(arrayIntern, arrayParam, sizeof(arrayParam)); 
    }
    

    ...gibt mir der Compiler für das sizeof den Wert 4 zurück
    (er berechnet also die Größe des Pointers und nicht die
    Bytelänge vom dem Array auf das der Pointer zeigt).

    Klar könnte ich da jetzt auch einfach ne 7 eintragen
    damit er die gewünschte Bytelänge des Arrays benutzt,
    aber ich wollte einfach mal fragen ob es auch mit
    sizeof ne Möglichkeit gibt an die Bytelänge des Arrays
    zu kommen? Müsste doch eigentlich möglich sein denn
    zur Compilezeit kennt der Compiler ja die Arraylänge
    in Bytes uns sizeof arbeitet ja auch zur Compilezeit.

    *sizeof(arrayParam) geht ja auch nicht, weil mir das 1
    zurückgibt. Aalso die Größe des ersten Arrayfelds weil
    für ihn *sizeof(arrayParam) ja natürlich das gleiche wie
    sizeof(arrayParam[0]) ist.

    Danke ! 🙂



  • Ich habe grade in der C++ Reference gelesen das sizeof(array)
    mir eigentlich doch die bytelänge des arrays zurückgeben müßte:

    When the sizeof operator is applied to an array, it yields the total number of bytes in that array, not the size of the pointer represented by the array identifier.

    Wieso gibt der mir dann die pointer grösse (4) zurück 😕




Anmelden zum Antworten