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

Majin.Buu

Frischling

Beiträge: 23

Wohnort: Dresden

Beruf: Schüler

  • Private Nachricht senden

61

07.05.2011, 14:53

Wir doch im Buch alles erklärt?!
Steht bei dem Kapitel (2) Variablen -> (2.7) Konstanten.

62

07.05.2011, 15:32

ja ich weiß ja was man mit const meint aber den zusammenhang mit den arrays versteh ich nicht soganz

63

07.05.2011, 16:02

Konstanten sind nicht veränderbar -> der Wert einer Konstante steht schon zur Kompilierzeit fest

Zitat

Basically, there are only 10 types of people in the world. Those who know binary, and those who don't.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

64

07.05.2011, 17:12

Quellcode

1
2
3
4
5
6
7
int array[10]; // geht

const int size = 10;
int array[size]; // geht

int size = 10;
int array[size]; // geht nicht


Du kannst die constante auch als größenangabe für das array benutzen. Das ist der Zusammenhang ;)

65

07.05.2011, 20:13

Sylence vielen vielen dank . Das wollte ich wissen

Ich mach noch zur Übung, das Zahlenspiel nachzurpogrammieren, bis ich es ohne nachzuschauen, programmieren kann :)

Oberon

Treue Seele

Beiträge: 181

Wohnort: Österreich

Beruf: Student

  • Private Nachricht senden

66

08.05.2011, 10:28

Stimmt nicht! Der Wert einer Konstante muss nicht zur Kompilierzeit feststehen! In diesen Fällen kann man sie auch nicht als Größenangabe für Arrays verwenden:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include <iostream>

int main()
{
    int input;
    std::cin >> input;
    const int size = input;
    int arr[size];
}

Zitat von »VS 10«


test.cpp(8) : error C2057: Konstanter Ausdruck erwartet
test.cpp(8) : error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
test.cpp(8) : error C2133: 'arr': Unbekannte Größe


Mit

C-/C++-Quelltext

1
const int size = 42; // Oder irgendeine andere zur Kompilierzeit feststehende Zahl oder Berechnung (z.B. 3+6)
geht es allerdings, und mit

C-/C++-Quelltext

1
int size = 42; // nicht const
wieder nicht.

Die Größe eines Array (und Template-Parameter) muss also sowohl zur Compilezeit feststehen als auch eine Konstante (mit const oder literal) sein.

Was wieder zeigt, dass in C++ doch vieles eine Spur komplizierter ist, als man denkt.

67

08.05.2011, 16:27

Um sich ein Bild davon zun machen, kann man hergehen und ein paar Arrays erzeugen.
Dann lässt man sich einfach deren Größe mit dem Schlüsselwort sizeof ausgeben, um zu shene, wie hoch der Speicherbedarf ist.
Manchmal ist man dann doch ein wenig überrascht.

Wie mache ich das jetzt könnt ihr mir bitte einige Beispiele zeigen?



  1. #include <iostream>

  2. using namespace std;

  3. int main ()

  4. {

  5. // Konstanten

  6. const int Breite = 5; // Breite der Karte

  7. const int Hoehe = 5; // Hoehe der Karte

  8. // Variablen

  9. int Karte[Breite][Hoehe]; // Zweidimensinales Array für die Karte

  10. int x, y; // Schleifenzähler

  11. int Zaehler = 0; // Zum Füllen der Karte

  12. // Karte mit Werten füllen

  13. for (y=0; y<Hoehe; y++)

  14. {

  15. for (x=0; x<Breite; x++)

  16. {

  17. Karte[x][y] = Zaehler;

  18. Zaehler++;

  19. }

  20. }

  21. for (y=0; y<Hoehe; y++)

  22. {

  23. for (x=0; x<Breite; x++)

  24. {

  25. cout << Karte[x][y];

  26. }

  27. cout << endl;

  28. }

  29. return 0;

  30. }

da ich nur pastebin kenne tut mir leid...

Kann mir einer den Quelltext erklären ? also zeilen 15-37 was da jetzt genau passiert und wieso man so und so gemacht hat so richtig versteh ichs nicht

Danke schonmal

BLU3 L30PARD

Treue Seele

Beiträge: 336

Wohnort: Hoch oben im Norden Schleswig Holsteins

Beruf: Schüler

  • Private Nachricht senden

68

08.05.2011, 17:36

Du kannst kein Array mit Variabler Größe erstellen.
Du musst immer genau einen festen Wert angeben.
z.B.:

C-/C++-Quelltext

1
2
3
4
5
6
// Das geht:
int[5] meinArray; 

// Das geht nicht:
cin >> arrayGroesse;
int[arrayGroesse] meinArray;

Wenn du's noch nicht weisst: Konstanten kannst du nicht verändern.
Du legst deren Größe einmal fest und das wars. So weiß auch der
Compiler, dass dein Array eine feste Größe hat ;)

69

09.05.2011, 07:22

Du kannst kein Array mit Variabler Größe erstellen.

was heißt variabler?

und sowas geht?
const int meinArray[5];
oder meint man sowas

const Variabel = 34;

int mein Array [Variable];?

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

70

09.05.2011, 08:08

Du kannst kein Array mit Variabler Größe erstellen.

was heißt variabler?

und sowas geht?
const int meinArray[5];
oder meint man sowas

const Variabel = 34;

int mein Array [Variable];?

Gemeint ist letzteres.
Und variable heißt in der Größere veränderbar/flexibel.
Die größe muss explizit oder per Konstante angegeben werden.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Werbeanzeige