Show Menu
Cheatography

C - Zeiger / Pointer Cheat Sheet by

Übersicht über Zeiger / Pointer in C

Kurzüb­ersicht

Deklar­ation und Definition
int *zeiger;
Deklar­ation 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
Funktion
&
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
Adresse
Inhalt
IntArray[0]
*IntZeiger
00004711h
5
IntArray[1]
*(IntZeiger + 1)
00004715h
4
int *IntZeiger = NULL; 

int IntArr­ay[5]; 


IntZeiger = IntArray;

IntArr­ay[0] = 5; 

IntArr­ay[1] = 4; 

*IntZeiger = 5; 


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

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;
Operation
erlaubt?
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
           
 

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
          C program Cheat Sheet

          More Cheat Sheets by TimSch

          C - printf/scanf Cheat Sheet
          C- Grundlagen zu Variablen Cheat Sheet