Als ich kürzlich Golang für Teilzeitjobs und Hobbys schrieb und C-Sprache für Vorlesungen und Aufgaben in der Schule schrieb, dachte ich, dass Hinweise schwer zu verstehen sind, und wenn ich mit verschiedenen Ingenieurstudenten über diese Geschichte spreche, ist es für alle schwer zu verstehen. Ich dachte, also habe ich diesmal versucht, die Zeiger in C-Sprache zusammenzufassen (Golang wurde mit Bezug auf C-Sprache gemacht)! !! !!
Ein Computer reserviert Variablen in einem Programm im Speicher und speichert eine Adresse, um seinen Speicherort zu identifizieren. Der Zeiger wird verwendet, wenn das Programm die Adresse verarbeiten möchte. Mit anderen Worten, ein Zeiger ist eine Variable, die eine Adresse verarbeitet.
Schauen wir uns die Syntax für die Verwendung von Zeigern in C an.
`Datentyp * Zeigervariablenname;`
(Beispiel) Deklarieren Sie einen Zeiger für eine Variable vom Typ int
int *p;
&Variablennamen
(Beispiel)
#include<stdio.h>
int main() {
int x = 1;
int *p;
p = &x;
printf("「&x "Adresse: %p\n", &x);
printf("Adresse mit "p": %p\n", p)
return 0
}
(Ausführungsergebnis)
「&x "Adresse: 00A2EE76
Adresse mit "p": 00A2EE76
*Name der Zeigervariable;
(Beispiel)
#include<stdio.h>
int main(){
int x = 1;
int *p = &x;
printf("Wert in der durch "p" angegebenen Adresse: %d\n", *p);
return 0;
}
(Ausführungsergebnis)
Der Wert der durch "p" angegebenen Adresse: 1
Was ich für verwirrend halte und Aufmerksamkeit brauche, ist die Interpretation von "". Wenn Sie beim Deklarieren eines Zeigers eine Adresse zuweisen, lautet diese "int * p = & x". Es sieht also so aus, als ob "& x" " p" zugewiesen ist, aber semantisch "p = & x". ". Mit anderen Worten, die folgenden beiden sind synonym.
int x = 1;
int *p;
p = &x;
int x = 1;
int *p = &x;
Der zweite zu beachtende Punkt betrifft die Initialisierung. Durch einfaches Deklarieren einer Zeigervariable wird die durch diese Zeigervariable angegebene Adresse undefiniert. Wenn Sie die Zeigervariable verwenden, ohne sie zu initialisieren, greifen Sie daher auf eine nicht angegebene Adresse zu, was zu einem Fehler führt.
#include<stdio.h>
int main() {
int x = 1;
int *p;
//Die folgende Zeile verursacht einen Fehler, da p nicht initialisiert wurde
*p = x;
}
Sie können mit einem Array mithilfe der Zeigerarithmetik arbeiten, indem Sie die Startadresse des Arrays einer Zeigervariablen zuweisen. Wie Sie im folgenden Beispiel sehen können, sind "& num [0]" und "num" identisch. Außerdem sind "* (p + i)" und "num [i]" gleich.
#include<stdio.h>
int main() {
int *p;
int i;
int num[3] = {1, 5, 10};
//Die folgende Zeile weist der Zeigervariablen die Startadresse des Arrays zu
p = num;
for(i = 0; i < 3; i++) {
printf("%d\n", *(p + i)); //Bewegen Sie den Zeiger um die Anzahl der Elemente und nehmen Sie den Wert
}
return 0;
}
(Ausführungsergebnis)
1
5
10
Dieses Mal habe ich die grundlegenden Punkte zusammengefasst, die bei Zeigern in C-Sprache leicht zu missverstehen sind. Nächstes Mal werde ich einige der irreführenden Punkte über Golang-Zeiger zusammenfassen. !! !! !!
Recommended Posts