Show Menu
Cheatography

C - Zeiger / Pointer Cheat Sheet by

Übersicht über Zeiger / Pointer in C

Kurzüb­ersicht

Deklar­ation und Definition
int *zeiger;
Deklaration eines Zeigers zeiger auf einen int
Speich­era­dresse einer Variable in Zeiger speichern
int i;
int *ip;
ip = &i;
Auf den Wert (nicht die Speich­era­dresse) eines Zeigers zugreifen
int i;
int *ip;
ip = *i;
Zeigerwert NULL
In stdio.h definiert. Wird genutzt, um zu vermeiden, dass ein Zeiger irgend­wohin zeigt.
NULL ist ein Zeiger!
unverä­nde­rbare Zeiger
Werden wie Variablen mit dem Schlüs­selwort const definiert.
Zeiger auf Zeiger
Zeiger können auch auf andere Zeiger zeigen.
int Wert = 1234;
int *p1 = &Wert;
int **p2 = &p1;
Einen Zeiger auf einen Zeiger erstellt man mit dem doppelten Variab­len­ope­rator **

Zeiger Operatoren

Operator
Funk­tion
&
Adress­ope­rator
Greift auf die Speich­era­dresse der Variablen, auf die der Zeiger zeigt zu.
*
Variab­len­ope­rator
Greift auf den Wert der Variablen, auf die der Zeiger zeigt, zu.

Zeiger und Arrays

Array
Zeiger
Adre­sse
Inhalt
IntArray[0]
*IntZeiger
00004711h
5
IntArray[1]
*(IntZeiger + 1)
00004715h
4
int *IntZ­eiger = NULL;
int IntArr­ay[5];

IntZeiger = IntArray;
IntAr­ray[0] = 5;
IntAr­ray[1] = 4;
*Int­Zeiger = 5;

Da Zeiche­nketten ein Spezia­lfall von Arrays sind, gelten diese Regeln dort ebenfa­lls.
 

Zeiger­-Ar­ith­metik Regeln

Zeiger können mit ganzen Zahlen addiert und Subtra­hiert werden.
Zwei Zeiger gleichen Typs lassen sich subtra­hieren.
ip1 = 1 - ip2 wäre verboten, da 1 vom Typ int und ip2 vom Typ int * ist.
Alle anderen Operat­ionen, wie Multip­lik­ation oder Division usw. sind nicht erlaubt.
Es wird nicht in Bytes, sondern in Anzahl von Elementen des Datentyps, auf den der Zeiger zeigt, gerechnet.
Wird 1 zu einem Zeiger auf int addiert, zeigt er nicht auf die nächste Speich­era­dresse, sondern auf den nächsten int.

Zeiger­-Ar­ith­metik Beispiele

int i1 = 5, i2 = 7;
int ip1 = &1, ip2 = &i2;
Oper­ation
erla­ubt?
ip2 = ip1 + 1;
ja - Zeiger und ganze Zahl
ip1 = ip2 - 1;
ja - Zeiger und ganze Zahl
ip2 = 1 + ip1;
ja - Zeiger und ganze Zahl
ip1 = 1 - ip2;
nein - es können nur Zeiger gleichen Typs subtra­hiert werden
i1 = ip1 + ip2;
nein - keine ganze Zahl, sondern zwei Zeiger
i2 = ip2 - ip1;
ja - zwei Zeiger vom gleichen Typ

Übersicht unverä­nde­rbare Zeiger

Definition
int i1 = 5
int const i2 = 3;
int* ip1 = &i1; //veränderbarer Zeiger auf veränderbare Variable
int const * ip2 = &i2; //veränderbarer Zeiger auf unveränderbare Variable
int* const ip3 = &i1; //unveränderbarer Zeiger auf veränderbare Variable
int const * const ip4 = &i2;
*(ip1++); //erlaubt
(*ip1)++ //erlaubt
*(ip2++); //erlaubt
(*ip2)++; //Fehler - unveränderbare Variable!
*(ip3++); //Fehler - unveränderbarer Zeiger!
(*ip3)++ //erlaubt
*(ip4++); //Fehler - unveränderbarer Zeiger
(*ip4)++; //Fehler - unveränderbare Variable
           

Help Us Go Positive!

We offset our carbon usage with Ecologi. Click the link below to help us!

We offset our carbon footprint via Ecologi
 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          C Reference Cheat Sheet

          More Cheat Sheets by TimSch

          C- Grundlagen zu Variablen Cheat Sheet