Frage zum Typedef
-
Hallo,
ich habe eine Headerdatei erstellt, in der ich einen struct definiert habe.
struct test
{};
Dann sollte ich noch durch einen typdef aus dem struct test einen pointer machen.
typedef struct test *pointer;Jetzt habe ich aber in der main-funktion ein Problem, dass ich nicht weiß wie ich das weiter schreiben muss.
Ich will eben einen pointer in der main ahben, welcher mir auf den struct zeigt und den ich dann an andere funktionen übergebe.
int main() { pointer mainpointer; // deklaration eines pointers mit dem komplexen datentyp pointer. Aber hier weiß ich nicht weiter.Müsste ich hier noch ein Sternchen vor mainpointer setzen oder ist das schon dadurch berücksichtigt, das beim typedef *pointer vorliegt ?? func1(mainpointer); func2(mainpointer); }
Das ist jetzt nur grob dargestellt wie ich die Sysntax geschrieben habe und wie es nicht geht. Ich habe schon überlegt wie das anders gehen könnte und auch einiges ausprobiert, aber mein Programm stürzt immer ab.
Hat viielicht einer von euch eine Idee?
Mit freundlichen Grüßen
theflasher
-
theflasher schrieb:
Dann sollte ich noch durch einen typdef aus dem struct test einen pointer machen.
typedef struct test *pointer;Auch auf die Gefahr hin, dass du dich nur ungeschickt ausgedrückt hast: Du machst aus dem struct keinen Pointer. Du definierst einen Alias für den Typ "Zeiger auf struct test" namens pointer.
Jetzt habe ich aber in der main-funktion ein Problem, dass ich nicht weiß wie ich das weiter schreiben muss.
Das hängt davon ab, was du vorhast.
Ich will eben einen pointer in der main ahben, welcher mir auf den struct zeigt und den ich dann an andere funktionen übergebe.
Auf welches struct soll der Zeiger denn zeigen? In deinem Programm zeigt er nur irgendwo in die Wüste.
Aber hier weiß ich nicht weiter.Müsste ich hier noch ein Sternchen vor mainpointer setzen oder ist das schon dadurch berücksichtigt, das beim typedef *pointer vorliegt ??
func1(mainpointer);
func2(mainpointer);Da muss kein Sternchen hin, wenn du den Zeiger übergeben willst. Der Zeiger heißt mainpointer. *mainpointer ist das, worauf der Zeiger zeigt, aber nicht der Zeiger selbst.
-
Hallo, ich danke dir schon mal für deine Antworten.
Zu Punkt 3, ich möchte in der MAIN einen Pointer haben, der mir auf die Struktur "struct test" zeigt.
Aber zeigt der Zeiger mainpointer bei mir wirklich irgendwohin ? Ich dachte immer, dadurch das ich bereits den Datentyp pointer davor schreibe, ist es schon klar, welche Struktur gemeint ist.
Oder liege ich hier auch falsch ?
Gruss theflasher
-
theflasher schrieb:
Zu Punkt 3, ich möchte in der MAIN einen Pointer haben, der mir auf die Struktur "struct test" zeigt.
'struct test' ist erstmal nur ein Datentyp, so wie int oder float. Du brauchst auch eine Variable dieses Typs, auf die dann der Zeiger zeigen kann. Das sieht ungefähr so aus:
struct test { ... }; // typedef, falls gewünscht: typedef struct test* pointer; int main() { struct test meineTestVariable; struct test * zeiger = &meineTestVariable; // oder: pointer zeiger = &meineTestVariable; func(zeiger); // oder auch func(&meineTestVariable) ... nur weil func // einen Zeiger erwartet, heißt das nicht, dass du auch // einen deklarieren musst }
-
Hi, das funktioniert tatsächlich so, vielen Dank.
Hat ein wenig gedauert, bis ich noch die letzen Fehler aus meinem Programm hatte aber jetzt gehts ^^
Gruss theflasher