Array als Parameter?!



  • Hallo!
    Folgendes Beispiel habe ich geschrieben um mein kleines Problem zu verdeutlichen:

    #include<iostream>
    using namespace std;
    
    int funktion(int array[])
    {
            for (int i = 0; i < sizeof(array); i++)
                    cout << array[i];
            cout << endl;
    }
    
    int main()
    {
            int iArray[16];
            for (int i = 0; i < sizeof(iArray); i++)
                    iArray[i] = i;
            funktion(iArray);
    }
    

    In "funktion" ist die Größe von "array" 8! Obwohl sie ja 16 sein sollte wie "iArray". Folglich kann ich nur die ersten 8 Zahlen ausgeben, gefolgt von einem Speicherzugiffsfehler!!!! Warum funktioniert das nicht? ich bin schon etwas verzweifelt.... Danke 😮 😮



  • Weil die Größenangaben verloren gehen und die Funktion nur einen Pointer bekommt. Daher gibt dir sizeof die größe eines Pointers zurück, der auf deinem System (64Bit) eben 8 byte beträgt.

    Daher wirst du wohl einen weiteren Parameter für die Größe brauchen oder du nimmst etwas wie std::vector oder boost::array (wobei die eben die Größenangaben intern Speichern).



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Linux/Unix in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • rüdiger schrieb:

    Weil die Größenangaben verloren gehen und die Funktion nur einen Pointer bekommt. Daher gibt dir sizeof die größe eines Pointers zurück, der auf deinem System (64Bit) eben 8 byte beträgt.

    Daher wirst du wohl einen weiteren Parameter für die Größe brauchen oder du nimmst etwas wie std::vector oder boost::array (wobei die eben die Größenangaben intern Speichern).

    Das habe ich ganz vergessen! Vielen Dank! Ich habe ein zusätzlichen Parameter eingefügt und natürlich funktioniert es.

    P.S: Sorry fürs falsche Forum


Anmelden zum Antworten