Show Menu

C - Zeiger / Pointer Cheat Sheet by

Übersicht über Zeiger / Pointer in C
c     pointer     pointer     zeiger

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

Download the C - Zeiger / Pointer Cheat Sheet

2 Pages
//media.cheatography.com/storage/thumb/timsch_c-zeiger-pointer.750.jpg

PDF (recommended)

Alternative Downloads

Share This Cheat Sheet!

 

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

          Listen Cheat Sheet
          C- Grundlagen zu Variablen Cheat Sheet