Pointer in C – Lösung und Spielereien

Nachdem ich die letzte Folge über Pointer und Arrays mit einer kleinen Aufgabe beendet habe, wird es heute nun die Lösung der Aufgabe gehen.

Du bist sicher schnell auf die Lösung gekommen, auch ohne die Zeilen einfach in die Entwicklungsumgebung einzugeben.

Falls Du die Aufgabe noch nicht gemacht habe, lies Dir die vergangene Folge noch einmal durch, schau Dir das Video an und versuche die kleine Aufgabe zu lösen.
Gesucht war ja, herauszufinden, was die folgenden Befehle machen.

i_ptr=Array;
for ( i=0;  i<10; i++)
{
printf(„%d\n“,*i_ptr++);

}

Auch wenn der Term *i_ptr++ zunächst ein wenig kompliziert aussieht, ist die Lösung der Aufgabe eigentlich ganz einfach.

Man muss sich nur Schritt für Schritt der Lösng nähern.

Der Inhalt des Pointers i_ptr wird ausgeben und anschließend wird der Pointer inkrementiert.

Danach zeigt der Pointer auf das nächste Feld des Arrays. Hierbei ist es wichtig den Unterschied zwischen i++ und ++i zu kennen. Im zweiten Fall würde die Variable zuerst inkrementiert. Das erste Feld würde dann also nicht ausgegeben. Dafür aber die Speicherstelle hinter dem Array. Was dort auch immer stehen mag.

Im folgenden Video zeige ich noch einmal die Lösung in der Entwicklungsumgebung.

Am Ende des Videos zeige ich noch eine kleine Spielerei mit Pointern. Mit Pointern kann man allerlei Unfug treiben.

Daher Vorsicht: Um Dinge auszuprobieren und um zu testen, ob man das Thema Pointer wirklich verstanden hat, kann man solche harten Zugriffe auf den Speicher durchaus einmal machen.

Mit seriöser Mikrocontrollerprogrammierung hat das natürlich nichts zu tun. In der Praxis also unbedingt Finger weg von solchen Tricks.

Man kann nie sicher sein, wie der Compiler und der Linker die Variablen verwalten. Wenn man dann mit einem Pointer eine falsche Speicherstelle beschreibt kann das böse Auswirkungen haben.

Bei einer ernsthaften Programmierung bitte nie in hart-codierte Adressen schreiben.

Bis zum nächsten Mal!

Dieser Artikel ist Teil des Mikrocontroller-Kurses auf ET-Tutorials.de.
[ >> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses .]