Lokale Struktur an Funktion übergeben
-
Uppps! völlig falsch, sry
so nochmal:
Ist es möglich eine lokal definierte Struktur in main an eine andere Funktion zu übergeben? Ich habe es probiert, komme aber zu keiner Lösung. Die globale Deklaration sollte nicht verwendet werden.
Ich Bitte um Hilfe!
-
Und wie hast du es probiert?
-
Wo ist das Problem?
#include <stdio.h> void call (void (*what)()) { what(); } int main() { void hello_world() { puts("Hello World!"); } call(hello_world); }
Natürlich sind lokale Funktionen nach Standard gar nicht erlaubt, aber sofern dein Compiler dies als Feature anbietet, sollte es eigentlich funktionieren.
edit: Dies war die Antwort auf deine falsch gestellte Frage im Anfangsbeitrag. Danke für meine verschwendete Zeit
. Stell Fragen bitte in sauberer, lesbarer Schriftsprache. Du erwartest, dass jemand sich die Zeit nimmt, dir zu helfen. Da solltest du auch bereit sein, dir wenigstens mal ein bis zwei Minuten Zeit zu nehmen, deine Frage zu formulieren.
-
SeppJ schrieb:
edit: Dies war die Antwort auf deine falsch gestellte Frage im Anfangsbeitrag. Danke für meine verschwendete Zeit
Dass du jeden Mist, der nicht bei 3 auf den Bäumen ist, beantwortest, musst du dir schon selbst zuschreiben
-
Bashar schrieb:
Dass du jeden Mist, der nicht bei 3 auf den Bäumen ist, beantwortest, musst du dir schon selbst zuschreiben
Stimmt, ich hätte lieber moderieren sollen und ihm wegen der Unstimmigkeit zwischen Überschrift und Text und der allgemeinen Undeutlichkeit der Fragestellung erst einmal meine drei Standardtlinks vorwerfen sollen:
http://www.c-plusplus.net/forum/136013
http://www.c-plusplus.net/forum/200753
http://www.tty1.net/smart-questions_de.htmlAber irgendwie habe ich den Eindruck, dass ich in letzter Zeit zu abschreckend bin, da ich fast nur noch diese Antwort gebe.
-
hat sich erledigt! Frage konnte ich mir selbst beantworten
Die Struktur global definieren und dann lokal initialisieren. Trotzdem danke für die Antwort auf die nicht gestellte Frage
-
Bitmaske schrieb:
hat sich erledigt! Frage konnte ich mir selbst beantworten
Die Struktur global definieren und dann lokal initialisieren. Trotzdem danke für die Antwort auf die nicht gestellte Frage
Das klingt höchst verdächtig. Globale Variablen sind Mist, besonders für diese Anwendung. structs kannst du zwischen Funktionen herumreichen wie alle anderen Datentypen (außer Arrays) auch.
-
Also so meine ich es:
struct sData { int intFeld[20][20]; int inthase, intfuchs, intschrittweitefox; double dlbnachwuchs_hase, dblnachwuchs_fuchs; }Data; int main(void) { struct sData Data, *pData= &Data; /*typedef sData tData; tData bunny, fox, Feld, nachwuchs_bunny, nachwuchs_fox,intschrittweitefox;*/ pData->inthase=100; pData->intfuchs=20; pData->dlbnachwuchs_hase=0.2; pData->dblnachwuchs_fuchs=0.1; pData->intschrittweitefox=5; return 1; }
-
Wo wird da jetzt irgendwas an eine Funktion übergeben? Und ist dir klar, dass du zwei Variablen namens
Data
hast, ein globales (definiert in Zeileund eines lokal in der main (definiert in Zeile 12)? Und dient
pData
irgendeinem tieferen Zweck, außer umständlich zu sein?Oder anders gesagt: Was möchtest du erreichen?
-
Oh ja natürlich
struct sData { int intFeld[20][20]; int inthase, intfuchs, intschrittweitefox; double dlbnachwuchs_hase, dblnachwuchs_fuchs; }; void InitialisiereFeld(struct sData *pData); int main(void) { struct sData Data, *pData= &Data; /*typedef sData tData; tData bunny, fox, Feld, nachwuchs_bunny, nachwuchs_fox,intschrittweitefox;*/ pData->inthase=100; pData->intfuchs=20; pData->dlbnachwuchs_hase=0.2; pData->dblnachwuchs_fuchs=0.1; pData->intschrittweitefox=5; InitialisiereFeld(pData); return 1; } void InitialisiereFeld(struct sData *pData) { ..... }
Es ging darum die Struktur in main zu definieren und zu initialisieren und dann weiter zu reichen an void InitialisiereFeld. Aber es ging nicht weil die Struktur ja nur lokal ist und somit für andere Funktionen sichtbar.