Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.02.2012, 19:25

Größe von Variablen und Arrays... wie wirds berrechnet?

Hi Leute,

ich lese gerade das Buch und bin sehr zufrieden damit :D
Es macht einfach nur Spaß das Buch zu lesen, und damit zu arbeiten.

Ich bin nun bei Kapitel 5 angelangt und stehe vor einem Problem, bzw. weiß nicht genau wie etwas funktioniert.

Und zwar wird im Listing 5.2 die Größe vom array int Bonus durch die Größe von int geteilt um herauszufinden, wie viele Einträge das Array Bonus hat.

Das habe ich nicht ganz verstanden und habe mir deshalb mal die sizeof (Bonus); ausgeben lassen und es kommt 36 raus.

Warum 36? Dass die Größ von int 4 ist, weiß ich aus Kapitel 2. Aber warum Bonus 36 groß ist verstehe ich nicht.

Ich hoffe mir kann es jemand erklären^^ Denn wenn ich die einzelnen Ziffern im Array zähle komme ich auf 30.

Hier ist das array:

C-/C++-Quelltext

1
int Bonus[] = {100, 150, 250, 400, 600,                850, 1150, 1500, 1900}; cout << sizeof (Bonus) << endl; cout << sizeof (int) << endl;int AnzahlFelder = sizeof (Bonus) / sizeof (int);


Gruß Luck3r

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

25.02.2012, 19:35

Willkommen im Forum.

Es geht nicht um die Ziffern sondern um die Zahlen an sich. Du kannst pro int 2³²(4*8 Bit = 32 Bit) verschiedene Zahlen speichern. Das sind ca. 4 Milliarden. Also mit Vorzeichen alle ganzen Zahlen von -2 Millarden bis 2 Millarden.

Dein Array enthält 9 Integer also ist es 9*4=36 Byte groß.

Es bietet sich übrigens an es so zu schreiben:

C-/C++-Quelltext

1
2
3
4
int Bonus[] = {100, 150, 250, 400, 600, 850, 1150, 1500, 1900};
cout << sizeof (Bonus) << endl; 
cout << sizeof (Bonus[0]) << endl; // statt sizeof(int)
int AnzahlFelder = sizeof (Bonus) / sizeof (Bonus[0]); // statt sizeof (Bonus) / sizeof (int)

Was hast du davon? Nunja, solltest du dich entscheiden ein Short- oder Char-Array daraus zu machen um Speicher zu sparen, müsstest du mit deiner Schreibweise überall sizeof(int) durch sizeof(char) ersetzen. Das ist nicht nur viel unnötige Arbeit sondern auch gefährlich, weil man soetwas gern vergisst.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

3

25.02.2012, 19:40

Ach doch so einfach :D

Danke für deine Antwort, jetzt verstehe ich das auch :)

Gleich mal weiterlesen.

Grüße

Luck3r

4

25.02.2012, 19:47

Das mit sizeof (int) stand so im Beispiel im Buch :/
Ich werde mir deinen Tipp aber natürlich merken, danke :)

Werbeanzeige