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 :-)
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
> 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.
Hi! Danke für den Link.... Ich werd wohl erstmal ein bisschen was zu lesen haben bevor ich die nächste Frage stelle :-)
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
void foo( short* faa); reicht. foo() legt ja das Array nicht selbst an.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.