Array an Funktion übergeben und dynamisch Arraygröße bestimmen
-
Hallo, ich hätte da ein kleines Problem:
Ich möchte, dass eine Funktion ein Array als Argument aufnimmt, dann die Größe des Arrays bestimmt.
Ich habe das an einem Beispiel ausprobiert:
void printarray(char ary[]) { int size = sizeof(ary); for(int i=0; i<size; i++) { cout<<ary[i]; } cout<<endl; }Nun leider das Problem: size wird irgendwie immer zu 4, und ich weiß nicht warum. Was mache ich falsch?
-
Hallo
Weil Array in C/C++ als Pointer übergeben werden (ansonsten müßte ja das ganze Array beim Funktionsaufruf kopiert werden)
Deshalb ist sizeof gleich der Größe eines Pointers. Um die größe zu haben muß du diese mit einem extra Parameter übergeben, oder du verwendest gleich std::vector, das kennt seine Größe selber. std::vector sollte dabei am besten als (konstante) Referenz übergeben werden.bis bald
akari
-
Danke!
So, jetzt muss ich mich nur noch bis zum Kapitel std::vector durcharbeiten...
^^
-
Mit sizeof kann nicht die Größe von dynamischen Array's bestimmt werden,
sondern nur von statischen.Das sieht dann so aus und ist aus der MSDN kopiert.
int array[] = { 1, 2, 3, 4, 5 }; // sizeof( array ) is 20
// sizeof( array[0] ) is 4
// Count of items in array
size_t sizearr = sizeof( array ) / sizeof( array[0] );