Frage zur Größenbestimmung eines Arrays in einer Funktion



  • Hallo,

    Bei folgender Funktion hab ich ein Problem:

    int groese(int array[])
    {
        return(sizeof(array)/sizeof(int))
    }
    

    wenn ich jetzt in der main z.B.

    int test[3]={1,2,3};
    cout<<sizeof(array)/sizeof(int)<<endl;
    cout<<groese(test);
    

    eingebe, erhalte ich beim ersten cout die richtige größe beim zweiten aber immer eins.
    Kann mir da jemand helfen?
    Vielen Dank schon im Voraus 🙂

    UPPPSS: Falsches Forum. Sorry 🙄 . Wenn möglich verschieben



  • hoffe ich versteh dich richtig
    hier is meine lösung:

    #define GetArraySize(x)	(sizeof(x) / sizeof(x[0]))
    
    int test[3] = {1,2,3};
    cout << GetArraySize(test);
    


  • Ein Array wird wohl selten als Array übergeben, sondern als Pointer auf seinen Anfang. Somit ist es in einer funktion à la foo(bar* array); nicht mehr möglich, die Größe des Speicherbereichs herauszubekommen - sizeof() gibt dir dann die Größe des Pointers.

    greetz, Swordfish



  • std::vector nehmen oder größe mit übergeben



  • okay, ich werd die methode mit der Größe übergeben nutzen.
    Vielen Dank an alle

    edit: Woh-XD deine Methode funktioniert auch 😉



  • Fencer schrieb:

    edit: Woh-XD deine Methode funktioniert auch 😉

    Mit Einschränkungen - faktisch ist das identisch mit deinem Ansatz, nur hinter einem Makro versteckt (und funktioniert demzufolge nur, wenn du das Array in Reinform vorliegen hast).


Anmelden zum Antworten