C++ Länge eines Atrrays

Tron36

Ensign
Registriert
Jan. 2011
Beiträge
209
Hallo Leute,

bekanntermaßen bekommen wir ja die länge eines Arrays durch folgenden Code:

Code:
sizeof(array)/sizeof(array[0])
Als minimales Beispiel soll folgendetr Code gebeben sein:

Code:
#include <iostream>

using namespace std;

int main()
{
    int array[] = {0,1,2,3,4};
    cout << "name: " << sizeof(asd) << endl;
    cout << "First Ellement: " << sizeof(asd[0]) << endl;
    cout << "First Ellement: " << sizeof(array)/sizeof(array[0]) << endl;
    cout << "Hello world!" << endl;
    return 0;
}
Meine frage bezieht sich auf die Ausgabe, welches auf der Graik zu sehen ist.

Code:
#include <iostream>

using namespace std;

int main()
{
    int array[] = {0,1,2,3,4};
    cout << "name: " << sizeof(asd) << endl;
    cout << "First Ellement: " << sizeof(asd[0]) << endl;
    cout << "First Ellement: " << sizeof(array)/sizeof(array[0]) << endl;
    cout << "Hello world!" << endl;
    return 0;
}

was ich nicht ganz verstehe ist, dass bei der:
Code:
  cout << "name: " << sizeof(asd) << endl;
die Zahl 20 rauskommt .
und bei
Code:
   cout << "First Ellement: " << sizeof(asd[0]) << endl;
die Zahl 4.

Ich hoffe ihr könnt mir Helfen.

Ausgabe.png
 
Wo ist asd definiert? Ich denke du meinst "array".

Die Größe von "int" ist 4 byte, deshalb ist die Größe des ersten Elements 4. Die Größe des Arrays ist 20, da 5*4=20.

sizeof(x) := Anzahl Bytes von x

Die bekannte Methode, die du meinst, dividiert die beiden Werte einfach nur, um die Anzahl Elemente zu bekommen.
 
Zuletzt bearbeitet:
Die Zeile 7
int array[] = {0,1,2,3,4};
dürfte in Wahrheit
int array[] asd = {0,1,2,3,4};
heißen und Zeile 10 scheint auch nicht original vom Quellcode zu sein. Auch sollte man nicht so eine Mist wie "name" und "First Ellement" davor schreiben, wenn man eigentlich was anderes meint. Ansonsten sieht es aber richtig aus, die erste Ausgabe ist 20, da es ein Array mit 5 int Elementen ist und jedes int ist 4 Byte (32Bit) lang.
 
Zurück
Oben