Länge eines übergebenens Arrays richtig ermitteln?



  • Hallo bin ganz neu hier, C-Anfänger und hoffe, dass ich für meine Frage nicht gleich gelyncht werde 😉

    Ich möchte einfach nur einen Array als Parameter einer Funktion übergeben und innerhalb dieser Funktion dann über den Array iterieren, dazu möchte ich die zunächst die Länge des übergebenen Array mittels sizeof ermitteln. Mir ist klar, dass ich eigentlich noch durch die Größe des Datentyps teilen muss, aber bei sizeof passiert in meinen Augen was merkwürdiges.

    void printSizeOf(int *array) {
        printf("sizeof(array)=%lu\n", sizeof(array));
    }
    
    int main() {
        int array[] = {1, 2, 3, 4, 5, 6, 7};
        printf("sizeof(array)=%lu\n", sizeof(array));
        printSizeOf(array);
    }
    

    die Ausgabe ist komischerweise:
    sizeof(array)=28
    sizeof(array)=4
    ich hätte eigentlich erwartet, dass sizeof beidesmal 28 liefert!?

    Ich schätze mal, ich übergebe den Array falsch oder greife in der Funktion falsch drauf zu.

    Vielen Dank für Eure Hilfe.



  • Das Array wird bei der Übergabe an die Funktion zu einem Zeiger. Ergo ergibt sizeof nicht die Größe des Arrays, sondern die Größe des Zeigers.

    Am besten mal die FAQ hier durchlesen, da wird das imho recht gut erklärt:
    http://c-faq.com/aryptr/index.html



  • vielen Dank für den Link, der ist wirklich gut 🙂

    ... verstehe... die einfachste Möglichkeit wäre es also, die Array-Länge einfach mit als Argument zu übergeben.



  • LaFleur schrieb:

    die einfachste Möglichkeit wäre es also, die Array-Länge einfach mit als Argument zu übergeben.

    so ist es.
    🙂


Anmelden zum Antworten