Wie gehe ich an diese Funktion ran?
-
In einer Aufgabe wurde eine Struktur deffiniert:
typedef struct structur_1 { char *name; } s;
und nun soll ich die Daten mit einer Funktion einlesen die so aussieht:
structur_1 *datenEinlesen();
Meine Frage ist, wie gehe ich an so eine Funktion ran? Was bewirkt diese Codezeile?
lg- koen
-
structur_1 *datenEinlesen();
Das deklariert eine Funktion die keine Argumente nimmt und einen Zeiger auf ein structur_1 zurückgibt. Was nicht sehr sinnvoll klingt, da das dann nur eine Zeiger auf ein lokales oder globales Objekt sein kann. Außerdem gibt es den Typ structur_1 gar nicht, es gibt einen Typ s und eine Typ struct structur_1.
Und vermutlich hast du kein Wort davon verstanden, weil dir sämtliche Grundlagen fehlen.
-
Mein Problem ist das ich soetwas nicht kenne.
Das deklariert eine Funktion die keine Argumente nimmt und einen Zeiger auf ein structur_1 zurückgibt.
Eine Funktion die keine Argumente nimt und auf die Structur zeigt mit der ich arbeite, soweit habe ich mir das auch schon gedacht, den ich lese etwas ein und will es dann an die structur weitergeben. Wenn ich das richtig verstanden habe, kann ich dann einfach aus der Funktion heraus, direckt auf die Structur zugreifen?
(alás.name="DerName";
)
-
Koen. schrieb:
Eine Funktion die keine Argumente nimt und auf die Structur zeigt mit der ich arbeite, soweit habe ich mir das auch schon gedacht, den ich lese etwas ein und will es dann an die structur weitergeben.
Weitergeben ist etwas anderes als Zeigen. Daher der obige Kommentar, dass dies eine äußerst ungewöhnliche Vorgabe (?) ist.
Wenn ich das richtig verstanden habe, kann ich dann einfach aus der Funktion heraus, direckt auf die Structur zugreifen?
(alás.name="DerName";
)
Ganz kalt. Es existiert (bei dem Code den du bisher gezeigt hast) keine konkrete Instanz der Struktur und wenn sie existieren würde, könnte sie nicht s heißen, denn so heißt bereits der typedef den du für das struct hast (Auch eine sehr zweifelhafte Vorgabe, so etwas s zu nennen).
Mein Problem ist das ich soetwas nicht kenne.
Führ dir nochmal die vorhergehenden Kapitel in deinem Lehrwerk gründlich zu Gemüte, dir fehlt so einiges an wichtigen Grundlagen.
-
SeppJ schrieb:
structur_1 *datenEinlesen();
...
Das deklariert eine Funktion die keine Argumente nimmt und einen Zeiger auf ein structur_1 zurückgibt...Das mit den Argumenten ist falsch.
Eine leere Parameterliste in der Deklaration steht für eine unbekannte aber feste Anzahl (beliebiger) Parameter außer variablen Parameterlisten und unterscheidet sich somit von "wirklich leeren" Parameterlisten wiestructur_1 *datenEinlesen(void);
() und (void) ist hier also nicht das Gleiche und schon gar nicht dasselbe.
-
Ach, ja. Hier ist ja C, nicht C++.