Zeiger Flashcards
Was ist ein Zeiger?
Ein Zeiger ist wie eine Variable, nur das statt eines Wertes ein Speicheradresse gespeichert wird.
Was ist eine indirekte Adressierung?
Greife auf den Wert in der Adresse zu, die in dieser Adresse steht.
Zeiger - Deklaration
Datentyp *zeigerbezeichner;
Was muss bei der Deklaration von Zeigern als Datentyp angegeben werden?
Der Datentyp der Adresse, auf die der Zeiger Zeigt.
Was für ein Datentyp kann ich bei der Zeigerdeklaration angeben, wenn ich nicht weiß was für ein Datentyp die Adresse hat, auf die der Zeiger zeigen soll oder wenn er auf unterschiedliche Datentypen zeigen soll.
Der Datentyp void
:
void *zeigerbezeichner
Was ist das große Problem, wenn man auf einen Zeiger zugreift, der noch nicht initialisiert wurde?
Im Zeiger steht dann irgendeine beliebige Adresse. Wenn auf diese Zugegriffen wird kann es zu Problemen kommen bis hin zum Abstrutz des Betriebssystems wenn es sich bei der Adresse um eine Adresse handelt in der z.B. wichtige Dateien stehen.
Wie kann ich auf den Wert in der Variable zugreifen, auf die mein Zeiger zeigt?
Mit dem Indirektionsoperator *
~~~
int a = *y;
~~~
Wie kann ich mit dem Indirektionsoperator den Wert einer Variable verändern auf die mein Zeiger zeigt?
*y = 10;
Welche best practice Methode gibt es um zu verhindern dass auf nicht initialisierte Zeiger oder auf Zeiger mit illegalen Werten zugegriffen wird.
Der Zeiger wird mit NULL initialisiert oder ihm wird der NULL Wert zugewiesen.
~~~
int *y = NULL;
~~~