Zeiger sind leistungsstarke Funktionen der C- und C ++ – Programmierung. Bevor wir Zeiger lernen, lernen wir die Adressen in der C-Programmierung kennen.
Adresse in C
Wenn Sie eine Variable var in Ihrem Programm haben, &var
gibt Ihnen die Adresse im Speicher.
Wir haben die Adresse bei Verwendung der Funktion scanf()
mehrfach verwendet.
Hier wird der vom Benutzer eingegebene Wert in der Adresse der Variablen var gespeichert. Nehmen wir ein Arbeitsbeispiel.
Ausgabe
var: 5 address of var: 2686778
Hinweis: Sie erhalten wahrscheinlich eine andere Adresse, wenn Sie den obigen Code ausführen.
C. Zeiger
Zeiger (Zeigervariablen) sind spezielle Variablen, die zum Speichern von Adressen anstelle von Werten verwendet werden.
Zeigersyntax
So können wir Zeiger deklarieren.
Hier haben wir einen Zeiger p vom Typ int
deklariert.
Sie Sie können Zeiger auch auf diese Weise deklarieren.
Nehmen wir ein weiteres Beispiel für die Deklaration von Zeigern.
Hier haben wir einen Zeiger p1 und eine normale Variable p2 deklariert.
Zuweisen von Adressen zu Zeigern
Nehmen wir ein Beispiel.
Hier wird der Variablen c 5 zugewiesen. Und die Adresse von c wird dem PC-Zeiger zugewiesen.
Wert der durch Zeiger gerichteten Sache abrufen
Um den Wert der Sache zu erhalten, auf die die Zeiger zeigen, verwenden wir den *
Operator. Beispiel:
Hier wird dem PC-Zeiger die Adresse von c
zugewiesen. Um den in dieser Adresse gespeicherten Wert abzurufen, haben wir * pc verwendet.
Hinweis: Im obigen Beispiel ist pc ein Zeiger, nicht *pc
. Sie können und sollten nicht wie *pc = &c
;
*
wird der Dereferenzierungsoperator genannt ( bei der Arbeit mit Zeigern). Es arbeitet mit einem Zeiger und gibt den in diesem Zeiger gespeicherten Wert an.
Ändern des durch Zeiger gezeigten Werts
Nehmen wir ein Beispiel.
Wir haben dem PC-Zeiger die Adresse von c zugewiesen.
Dann haben wir den Wert von c auf 1 geändert. Seit pc und der Adresse von c ist dasselbe, *pc
gibt uns 1.
Nehmen wir ein anderes Beispiel.
Wir haben dem PC-Zeiger die Adresse c zugewiesen.
Anschließend haben wir *pc
mit *pc = 1;
. Da pc und die Adresse von c gleich sind, ist c gleich 1.
Nehmen wir noch ein Beispiel.
Die Adresse von c wird dem PC-Zeiger mit pc = &c;
zugewiesen. Da c 5 ist, gibt *pc
5 an.
Dann wird die Adresse von d dem PC-Zeiger unter Verwendung von pc = &d;
zugewiesen. Da d -15 ist, gibt *pc
uns -15
Beispiel: Arbeiten mit Zeigern
Nehmen wir ein Arbeitsbeispiel.
Ausgabe
Address of c: 2686784Value of c: 22Address of pointer pc: 2686784Content of pointer pc: 22Address of pointer pc: 2686784Content of pointer pc: 11Address of c: 2686784Value of c: 2
Erläuterung des Programms
-
int* pc, c;
Hier Es werden ein Zeiger-PC und eine normale Variable c vom Typint
erstellt.
Da pc und c anfangs nicht initialisiert werden, zeigt der Zeiger-PC entweder auf keine Adresse oder eine zufällige Adresse. Die Variable c hat eine Adresse, enthält jedoch einen zufälligen Müllwert. -
c = 22;
Dies weist der Variablen c 22 zu. Das heißt, 22 wird im Speicherort der Variablen c gespeichert. -
pc = &c;
Dies weist dem Zeiger-PC die Adresse der Variablen c zu. -
c = 11;
Dies weist der Variablen c 11 zu. -
*pc = 2;
Dadurch wird der Wert an der Speicherstelle, auf die der Zeiger-PC zeigt, auf 2 geändert.
Häufige Fehler beim Arbeiten mit Zeigern
Angenommen, Sie möchten, dass der Zeiger-PC auf 2 zeigt zeigen Sie auf die Adresse von c.
Hier ist ein Beispiel für Zeigersyntax, das Anfänger oft als verwirrend empfinden.
Warum haben wir keinen Fehler erhalten, wenn Verwenden von int *p = &c;
?
Dies liegt daran, dass
In beiden Fällen erstellen wir einen Zeiger p
(nicht *p
) und &c
zuweisen.
Um diese Verwirrung zu vermeiden, können wir die folgende Anweisung verwenden:
Jetzt wissen Sie, was Zeiger sind, und lernen, wie Zeiger beziehen sich auf Arrays im nächsten Lernprogramm.