Beruflich Dokumente
Kultur Dokumente
de/ppm
Zeiger
Variablen
Eine Variable zeichnet sich aus durch:
Typ, Name, Speicheradresse und Wert
Beispiel 1
Typ: Socken Name: Wert: Adresse Schublade 1 2 c2
1 a b c d 1
3 a b c d
Beispiel 2
#include<stdio.h> int main(void) { int a; a = 5;
printf("Typ der Variablen: printf("Name der Variablen: printf("Wert der Variablen: printf("Speicheradresse der Variablen: return 0; } -> -> -> -> Typ der Variablen: Name der Variablen: Wert der Variablen: Speicheradresse der Variablen:
Integer a 5 0xbffff978
2
Zeiger
In C gibt es einen Datentyp Zeiger. Ein Zeiger ist eine Variable, die auf eine Speicheradresse zeigt. => Der Wert eines Zeigers ist eine Adresse. Ein Zeiger hat stets den selben Typ wie die Variable, auf die er zeigen soll. Ein Zeiger wird deklariert mit int *zeiger; Fr die Arbeit mit Zeigern sind zwei Operatoren wichtig: => & Adressoperator => * Referenzierungsoperator (Inhaltsoperator)
Zusammenfassung
Ein Zeiger ist eine Variable, die als Wert die Adresse einer anderen Variablen enthlt. Mit Hilfe von Zeigern kann man indirekt auf eine Variable zugreifen. => Wichtig bei Funktionen (call by reference)
Adressoperator
Der Adressoperator gibt die Speicheradresse einer Variablen an. Die Funktion scanf bentigt z.B. eine Adresse, an der sie eine Eingabe speichern kann.
Beispiel
#include<stdio.h> int main(void) { int a; scanf("%d",&a); printf("Wert von a: %d\n",a); printf("Speicheradresse von a: %p\n",&a); return 0; } -> 25 -> Wert von a: 25 -> Speicheradresse von a: 0xbffff978
Anmerkung:
Der Platzhalter %p gibt den Parameter als Zeiger in hexadezimaler Form aus.
Referenzierungsoperator
Der Referenzierungsoperator (Inhaltsoperator) gibt den Wert / Inhalt einer referenzierten Variablen an.
Beispiel
Der Variablen zahl wird der Wert 25 zugewiesen. Dem Zeiger zeiger wird die Speicheradresse der Variablen zahl zugewiesen. Durch die Anwendung des Referenzierungsoperators auf den Zeiger zeiger erhalten wir den Wert der Variablen zahl, auf die der Zeiger zeigt, also den Wert 25.
#include<stdio.h> int main(void) { int zahl; int *zeiger; zahl = 25; zeiger = &zahl; printf("Wert von zahl: printf("Adresse von zahl: printf("Wert von zeiger: printf("Adresse von zeiger: printf("Referenzierter Wert von zeiger: return 0; } -> -> -> -> -> Wert von zahl: Adresse von zahl: Wert von zeiger: Adresse von zeiger: Referenzierter Wert von zeiger: 25 0xbffff978 0xbffff978 0xbffff974 25
5
%d %p %p %p %d
Beispiel
#include<stdio.h> // Deklaration der Funktion mult ---------------------------double mult(double faktor1, double faktor2); // Hauptprogramm -------------------------------------------int main(void) { double a,b,c; a = 3; b = 5; c = mult(a,b); printf("%1.0f x %1.0f = %1.0f\n",a,b,c); return 0; } // Definition der Funktion mult ----------------------------double mult(double faktor1, double faktor2) { double ergebnis; ergebnis = faktor1 * faktor2; return ergebnis; } -> 3 x 5 = 15
7
Beispiel
#include<stdio.h> // Deklaration der Funktion mult ---------------------------int mult(double faktor1, double faktor2, double *ergebnis); // Hauptprogramm -------------------------------------------int main(void) { double a,b,c; a = 3; b = 5; mult(a,b,&c); printf("%1.0f x %1.0f = %1.0f\n",a,b,c); return 0; } // Definition der Funktion mult ----------------------------int mult(double faktor1, double faktor2, double *ergebnis) { *ergebnis = faktor1 * faktor2; return 0; } -> 3 x 5 = 15
8