Hallo mathwork, über Zeiger kann man wirklich ein ganzes Buch schreiben. Das was Du in Deiner Frage geschrieben hast soweit alles richtig. Lediglich den Part mit "mittels eines Pointers auf die Adresse einer deklarierten Variablen zeigt…" habe ich nicht ganz verstanden oder ist nicht ganz richtig. Ein Zeiger zeigt, wie der Name schon sagt, auf einen Speicherbereich. Dort (Speicherbereich) kann sich vieles verbergen. Variablen, Konstanten, Hardware Adressen der Mikrokontroller-Peripherie und Anderes. Auf all das kann man mittels Zeiger zugreifen und den Inhalt des Speichers verändern. Mit allen Risiken und Nebenwirkungen. Angenehm und daher sehr oft genutzt ist die Tatsache, dass nur die Speicheradresse und nicht der Inhalt des Speichers weitergegeben wird. Wenn Du in C einen Datensatz von 1000 Byte in ein Unterprogramm gibst wird der Compiler diese 1000 Byte auf den Stack des Programms legen. So werden eben Variablen übergeben. Speziell bei kleinen (embedded) Systemen hast Du aber diese 1000 Byte nicht. Hier hilft ein Zeiger. Es landet also nur der Zeiger, meist 4 Byte, auf dem Stack. Ein Zeiger kann und soll auch typisiert sein. Bedeutet, dass Du jederzeit einen Zeiger auf eine definierte Struktur (struct) haben kannst. Auch hier spart man Speicher bei der Parameterübergabe. Mit diesen Zeigern kannst Du Dir viel Arbeit ersparen. Angenommen Du bekommst über eine Schnittstelle, z.B. USB, einen Datenstrom ins Programm. Das ist dann meist ein Array of char. Wenn Du weißt, dass die empfangenen Daten einer Struktur entsprechen kannst du einen strukturierten Zeiger auf die Adresse der Daten legen und sofort hast Du Zugriff auf die einzelnen Elemente der Struktur ohne sie von A nach B kopieren zu müssen. (ZEIGER->TEST1 = xx;) Aber Achtung! Bei genau solchen Dingen passieren sehr schnell Fehler, wenn man nicht genau weiß was man tut. Was auch gern gemacht wird und auch immer wieder zu Probleme führt, ist das fortschalten strukturierter Zeiger. Machst Du bei einem strukturierten Zeiger ein ZEIGER++ schaltet er nicht um eine Adresse sondern um eine ganze Strukturgröße weiter. Daher können Zeiger auch wie ein Array behandelt werden. Befinden sich mehrere Strukturen hintereinander im Speicher kannst du, nachdem der Zeiger der Startadresse zugewiesen ist, z.B. mit ZEIGER[4] auf die 5te Struktur zugreifen. In C gehen Arrays immer bei 0 los. Sowas geht natürlich auch mit Array of char.
Ich könnte noch ein paar Stunden so weitermachen. Einfacher wäre es aber konkrete Fragen zu dem Thema zu besprechen. Wenn Dich konkrete Dinge interessieren einfach noch mal fragen.
Gruß jobe
Sonstiger Berufsstatus, Punkte: 505