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