Zurück Vor +Ebene Home Inhalt Index Hilfe

Zeiger

Zeiger, wichtigste Datenstruktur für effektive C-Programmierung. Enthält nicht den eigentlich zu speichernden Wert, sondern die Speicheradresse, an der der Wert gespeichert ist.
 
Zeiger sind typenbehaftet! Ein Zeiger auf eine int -Variable unterscheidet sich von einem Zeiger auf eine char -Variable.
 
Die Länge des Datentyps Zeiger richtet sich nach der Größe des adressierbaren Speicherbereichs und ist abhängig von der Architektur des Computers, aber unabhängig vom Typ des Zeigers!
 
Dereferenzierung *x , bezeichnet den Inhalt der Speicherzelle, auf die der Zeiger verweist. *x kann sowohl auf der linken wie auf der rechten Seite einer Zuweisung stehen:
   int x; 
   int* y;
   *y = 5;
   x = *y;

 
Nach der Deklaration gemäß int* x; ist der Zeiger x zunächst undefiniert, enthält also irgendeinen zufälligen Wert. Ein Beschreiben gemäß *x = 5 verändert unkontrolliert Speicherzellen, die anderen Variablen oder - schlimmstenfalls - einem ausführbaren Programm zugeordnet sind. Fehler oder Programmabsturz sind die Folge!
 
Adressen-Operator  ,,&``, liefert einen Zeiger des entsprechenden Typs auf eine Variable.
    int* p1;
    char* p2; 
    int i = 1;
    char c = 2;
    p1 = &i; 
    p2 = &c;
    printf("i = %d, c = %d",*p1,*p2); /*  liefert: "i = 1, c = 2"  */

 
Bei zusammengesetzten Datentypen mit großem Speicherbedarf ist beispielsweise das Umkopieren von Variablen mit Zeigern deutlich schneller als Operationen mit normalen Variablen, bei denen stets der gesamte Speicherbereich kopiert werden muß.

Zurück Vor +Ebene Home Inhalt Index Hilfe

Copyright Verlag Harri Deutsch AG  Stöcker DeskTop Mathematik