Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » mehrdimensionales array definieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
10.09.2004, 08:27 Uhr
Lensflare



Hallo.

Wie kann ich ein mehrdimensionales array gleich beim deklarieren mit werten füllen? (definieren)
folgendes geht nicht:

C++:
int array[][] = {1,2,3}{4,5,6};



Danke.
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.09.2004, 08:42 Uhr
(un)wissender
Niveauwart


So sollte es gehen:


C++:
int array[][2] = {{1,2},{3,4}}; //array[2][2]



Die geschweiften Klammer innerhalb können auch weggelassen werden, dienen aber der Übersicht!
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.09.2004, 09:05 Uhr
Lensflare



Es funktioniert, Danke.

Nur wäre es für mich logischer, wenn es so aussehen würde:

C++:
int array[][1] = {{1,2},{3,4}}; //array[2][2]


bei arrays beginnt ja so viel ich weiss alles bei 0.
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.09.2004, 09:26 Uhr
virtual
Sexiest Bit alive
(Operator)


@Lensflare
Wäre nicht wirklich logischer, nein: WEnn du ein Array so definierst:

C++:
int array[N];


Dann hat das Array N elemente, nummeriert von 0 bis N-1.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.09.2004, 10:15 Uhr
Pablo
Supertux
(Operator)



Zitat von Lensflare:
Es funktioniert, Danke.

Nur wäre es für mich logischer, wenn es so aussehen würde:

C++:
int array[][1] = {{1,2},{3,4}}; //array[2][2]


bei arrays beginnt ja so viel ich weiss alles bei 0.


Das ist falsch. Denn das int array[1]; (nur bei der Definition der Variable) sagt nicht, dass das großte Index 1 ist, sondern, dass die Anzahl von Elementen, die das Array aufnehmen kann, 1 ist, also 0 ist das größte Index.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 10.09.2004 um 10:15 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.09.2004, 13:54 Uhr
Lensflare



yo, ist klar.

ich mein, wenn man array[5] schreibt, dann kann das array 6 werte aufnehmen.
und wenn man array[][5] schreibt, dann kann die zweite dimension anscheinend nur 5 werte annehmen.
denn im beispiel von (un)wissender:

C++:
int array[][2] = {{1,2},{3,4}};  //in den geschweiften klammern jeweils zwei werte und nicht drei


sieht mans ja ganz deutlich und ich habs auch getestet

ich wurde glaub ich ein wenig missverstanden
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 11.09.2004 um 13:55 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.09.2004, 14:01 Uhr
Lensflare



ach und an virtual:

irgendwie hab ich probleme ein array mit einer variablen anzahl an werten zu deklarieren also zb:

int a = 5;
int array[a];

beim kompilieren gibts immer irgendwelche fehlermeldungen. Liegts daran, dass ich ausserhalb von funktionen (global) deklariere?
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.09.2004, 14:11 Uhr
Pablo
Supertux
(Operator)


1. Bei der Deklaration des Arrays heißt

C++:
int a[5];



dass a ein Array ist, dass 5 Elemente speichern kann. Die Indices sind 0,1,2,3,4.

2.

C++:
int a = 5;
int array[a];



Wenn das funktionieren würde, gäbe es die malloc/free (C) new/delete (C++) Geschichten gar nicht!
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.09.2004, 14:18 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von Pablo:
1. Bei der Deklaration des Arrays heißt

C++:
int a = 5;
int array[a];



Wenn das funktionieren würde, gäbe es die malloc/free (C) new/delete (C++) Geschichten gar nicht!


Sollte das nicht neuerdings funzen?

Ansonsten hilft nur


C++:
const int a = 5
int array[a];



oder


C++:
int a = 5;
int *array = new int[a];
...
delete[] array;


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
11.09.2004, 14:29 Uhr
0xdeadbeef
Gott
(Operator)


Arrays können nicht mit variablen Indices deklariert werden. Es gibt ein paar Compiler, die dafür mehr oder weniger wilde Workarounds bauen, aber es ist weder Standard-C noch sonderlich performant - dynamischer Speicher kommt auf den Heap, also mit malloc/free bzw. in C++ new/delete.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: