MoinMoin ich bastel grad ein wenig mit dem Standardlibs von ST fürs STM32F429Disko und stelle fest, dass die ihre structs mit das die ihre Variablen in den structs per Structname->Variablenname ansprechen, ich meine aber mit Structname.Variablenname anspreche. Gibt es einen Unterschied zwischen den beiden Varianten, und falls ja, welcher ist das? Auch eine Googlesuche brachte mich nicht wirklich weiter... Ich kann Google scheinbar nicht verständlich machen was ich suche... Zumindest mit "Unterschied zwischen . und -> in c" führt alles nur zu Unterschied zwischen C und C++... MfG Chaos
j. t. schrieb: > Gibt es einen Unterschied zwischen den beiden Varianten, und falls ja, > welcher ist das? -> dereferenziert einen Zeiger, . tut das nicht. > Auch eine Googlesuche brachte mich nicht wirklich weiter... Ein C-Buch würde dich weiterbringen. Das ist nämlich Grundlagenwissen.
Danke dir für die schnelle Antwort =) d.h. mit -> brauch ich meine structs nicht mehr Global anlegen, sondern kann sie dann per Zeiger ansprechen?
j. t. schrieb: > d.h. mit -> brauch ich meine structs nicht mehr Global anlegen, sondern > kann sie dann per Zeiger ansprechen? nein
»foo->bar« ist eine alternative Schreibweise für »(*foo).bar«, nicht mehr und nicht weniger.
Schau dir das Konzept der Zeiger an, wann und warum man diese einsetzt. Genau darum geht es hier nämlich.
Beispiel:
1 | typedef struct{ |
2 | int value; |
3 | }MyStruct; |
4 | |
5 | void foo(MyStruct * A){ |
6 | MyStruct B; |
7 | |
8 | A->value = 5; |
9 | B.value = 10; |
10 | }
|
Die Zeigerform nimmt man gerne für IO-Register. Diese dürfen ja nicht im RAM angelegt werden, sondern existieren schon an ganz bestimmten Adressen. Im io.h-File castet man dann die Adresse als Zeiger auf das IO-Register. Die Member-Form nimmt man für echte Variablen im RAM.
Also wirklich Peter. Die Zeigerform nimmt man auch für "echte Variablen im RAM".
Nun ist einiges klarer, Danke euch für die Antworten! =) MfG Chaos
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.