PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Felder Aufrufe



anve
06-03-2006, 14:23
Hallo Leute!

Ich habe folgende Frage:

Das nachstehende funktioniert in C++ nicht.


void printfeld1(int a[MAX1][], int len)

Feld:

int f1[MAX1][MAX2]={{1,1},{2,2},{3,3},{4,4},{5,5}};

Folgendes aber schon:

void printfeld1(int a[][MAX2], int len)

Kann mir jemand erklären, warum das eine funktioniert und das andere nicht?

Mfg
anve

locus vivendi
06-03-2006, 14:47
Hallo Leute!

Ich habe folgende Frage:

Das nachstehende funktioniert in C++ nicht.
Bitte wenn es möglich ist nicht schreiben "Es funktioniert nicht", sondern beschreibe was du getan hast, welches Resultat du erwartet hast, und was tatsächlich passiert ist.

Was vermutlich passiert ist, ist, dass dein Compiler einen Fehler gemeldet hat und sich weigerte den Code zu übersetzen. Das ist auch in Ordnung so: Du kannst nur die erste Dimension des Arrays offen lassen. Nachzulesen in Abschnitt 8.3.4 des Standards.

Wenn du mehrdimensionale Arrays brauch, bei dem eine andere als die erste Dimension keine konstante Größe hat, wirst du eine Klasse verwenden müssen.

anve
06-03-2006, 15:53
Danke für deine Antwort!

Hab das nicht reingetippt. Wenn es genau wissen willst, es ist eine theoretische Frage, welche mir jemand gestellt hat. Aber ohne es hineinzutippen, warum funktioniert das nicht? Wo finde ich 8.3.4 des Standards?

Grüße
anve

locus vivendi
07-03-2006, 09:31
Wo finde ich 8.3.4 des Standards?Du kannst den Standard z.B. als Buch erwerben, noch halbwegs erschwinglich.
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470846747.html
Soweit ich weiß, gibt es auch eine PDF-Ausgabe zu kaufen, für 18 Dollar. Du musst aber nicht unbedingt Geld ausgeben, um den genannten Abschnitt zu lesen, es reicht auch aus, wenn du von der Homepage des C++-Kommitees den aktuellen Draft herunterlädst. Dort ist 8.3.4 auch drin, mit höchstens kleinen Unterschieden.
(http://www.open-std.org, dann den Links folgen.)

anve
07-03-2006, 14:04
irgendwie kann ich ohne passwort nicht darauf zugreifen ...

Aber weiß jemand warum das so ist?

Grüße
anve

locus vivendi
07-03-2006, 14:17
irgendwie kann ich ohne passwort nicht darauf zugreifen ...Auf den Draft, den ich erwähnte? Das ist dieses Dokument:
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1905.pdf
Da wird bei mir kein Passwort verlangt.

anve
07-03-2006, 14:38
Danke für den Link. Irgendwie war ich woanders. Werde mir das dann mal durchlesen.

Grüße
anve

Joghurt
08-03-2006, 22:38
void printfeld1(int a[][MAX2], int len)

Sind MAX2 Pointer auf ein int-array, Größe sizeof(int*)*MAX2 Bytes -> kein Problem

void printfeld1(int a[MAX1][], int len)

Sind eine beliebige Anzahl von Pointern auf ein array mit MAX1 Einträgen -> Feldgröße nicht bekannt.

HTH