rückgabetyp short[ ][ ]! Wie geht das??

Gast #284808
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  :-)
Gast #284810
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.
Gast #284812
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
Gast #284814
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.