Uwe schrieb:
> Erst mal danke für die Antwort.
> Ja das ist war. Es darf kein Zeiger sein.
>
> Sollte dann so aussehen damit fester Speicherbereich zugeordnet wird.
>
> struct struct1 a;
> struct struct1 b;
>
> Aber wie muß die Syntax oder ein Zeiger aussehen, damit ich auf
> die Strukturelemente mit den Einträgen zu greifen kann.
Zunächst mal brauchst du da erst mal keinen Zeiger.
a ist dein struct1 Objekt.
Also ist a.a1 der erste Member dieses Objektes.
Wenn du einen Pointer hättest
struct struct1 * PointerZuStruct1;
PointerZuStruct1 = &a;
jetzt zeigt der Pointer auf a und damit auf das Strukturobjekt.
PointerZuStruct1
+---------+
| o-------------------+
+---------+ | a
| +------------+
+----->| a1: 5 |
+------------+
| a2: 7 |
+------------+
Der Zugriff würde dann so aussehen
(*PointerZuStruct1).a1
also im Grunde wieder genau gleich. Du nimmst den Pointer
PointerZuStruct1
dereferenzierst ihn (du verfolgst also im Bild den Pfeil)
*PointerZuStruct1
was dich zum eigentlichen struct Objekt bringt (dem Kasten, über dem a
steht)
(Beachte: Jetzt bist du wieder beim Objekt selber, also der Struktur)
und von dieser Struktur wieder der a1 Member
(*PointerZuStruct1).a1
Aber: Da die Schreibweise mit dem * und der Klammerung ziemlich
tippaufwändig ist, und man diese Zugriffsform oft braucht, hat man in C
dafür eine Abkürzung erfunden
PointerZuStruct1 -> a1
macht genau dasselbe, ist aber einfacher zu tippen. Insbesondere, wenn
in der Struktur dann selber wieder ein Pointer sitzt, der zu einer
anderen Struktur führt, etc. etc.
> Wollte die Strukturen in ein Header-File packen und dieses dann im
> ganzen Programm nutzen können.
Ja kannst du auch.
Funktioniert genau gleich, wie mit allen anderen globalen Variablen.
Dazu braucht es aber erst mal keine Pointer.
Vielleicht doch mal ein C-Buch konsultieren?