Forum: Compiler & IDEs rückgabetyp short[ ][ ]! Wie geht das??


von frank (Gast)


Lesenswert?

Hallo!

Ich hab da wohl ein Anfängerproblem zu dem ich keine Antwort finde.
Ich habe eine Methode die als Rückgabetyp einen short array haben
soll.
Der compiler sagt mir dass das kein L-Type ist. Ich hab leider keine
Möglichkeit gefunden wie ich das machen kann. Für mich ist c recht neu
und ich habe vorher mit assembler und Java gearbeitet. Deshalb hab ich
kaum erfahrung mit Pointern. Ich tippe also mal darauf dass es
irgendwie damit geht. Ich habs aber nicht auf die reihe bekommen. Bin
für jede Hilfe dankbar  :-)

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

short ** foo(void);

aber ich denke du willst dich genauer damit beschäftigen wie arrays in
C funktionieren. Ich empfehle dir das Studium von
http://www.schellong.de/c.htm#addr und dem folgenden Kapitel.

Matthias

von Rolf Magnus (Gast)


Lesenswert?

> Ich habe eine Methode die als Rückgabetyp einen short array haben
> soll.

Das geht nicht.

> Der compiler sagt mir dass das kein L-Type ist.

Da hat er Recht. Arrays sind in C nicht kopierbar, aber um aus einer
Funktion eines zurückzugeben, müßte es das sein.
Wie du dein Problem lösen kannst, kommt auf deinen Fall an. Wo wird das
Array definiert? Wo kommt der Speicher dafür her?
Am besten zeigst du etwas Code.

PS: In C gibt's keine "Methoden", sondern nur Funktionen.

von frank (Gast)


Lesenswert?

Hi!
Danke für den Link....
Ich werd wohl erstmal ein bisschen was zu lesen haben bevor ich
die nächste Frage stelle :-)

von peter dannegger (Gast)


Lesenswert?

short ** foo(void);

ist prinzipiell möglich, aber sehr selten.

Der Grund ist, daß ein in der Funktion angelegtes Array nach dem Aufruf
wieder ungültig ist.

Daher legt immer der Aufrufer das Array an und übergibt den Zeiger
darauf der Funktion, die damit was machen soll:

void foo(short ** faa);


Peter

von Karl H. (kbuchegg)


Lesenswert?

void foo( short* faa);

reicht. foo() legt ja das Array nicht selbst an.

von sous (Gast)


Lesenswert?

Nicht, dass ich empfehlen würde, es so zu machen, aber die Funktion
KÖNNTE (wenn sie wollte) das array durchaus selbst mit 'malloc'
anlegen und den Zeiger darauf zurückgeben. Dann müsste allerdings das
aufrufende Programm für die Freigabe des Speicherbereichs mit 'free'
sorgen.

Gruß, Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.