www.mikrocontroller.net

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


Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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  :-)

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: frank (Gast)
Datum:

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

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void foo( short* faa);

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

Autor: sous (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.