[GO] Was ist ein Zeiger?

Überblick

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)! !! !!

Was ist ein Zeiger?

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.

Syntax

Schauen wir uns die Syntax für die Verwendung von Zeigern in C an.

Zeigererklärung

`Datentyp * Zeigervariablenname;`

(Beispiel) Deklarieren Sie einen Zeiger für eine Variable vom Typ int  int *p;

Ersatzadresse

(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

Zeigen Sie den Wert in der vom Zeiger angegebenen Adresse an

*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

Dinge zu beachten

Achtung 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;

Achtung 2

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;
}

Arrays und Zeiger

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

Zusammenfassung

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

Was ist ein Zeiger?
Was ist eine Distribution?
Was ist ein Hacker?
Was ist ein Entscheidungsbaum?
Was ist ein Kontextwechsel?
Was ist ein Superuser?
Was ist ein Systemaufruf?
[Definition] Was ist ein Framework?
Was ist eine Rückruffunktion?
[Python] Was ist eine Zip-Funktion?
[Python] Was ist eine with-Anweisung?
Was ist ein lexikalischer / dynamischer Bereich?
Was ist das Convolutional Neural Network?
Was ist ein Namespace?
Was ist copy.copy ()
Was ist Django? .. ..
Was ist dotenv?
Was ist POSIX?
Was ist Linux?
Was ist SALOME?
Was ist Python?
Was ist Hyperopt?
Was ist Linux?
Was ist Pyvenv?
Was ist __call__?
Was ist Linux?
Was ist Python?
Was ist ein Hund? Django-Installationsvolumen
Was ist ein Hund? Python-Installationsvolumen
Was ist ein Hund? Django - Erstellen Sie ein benutzerdefiniertes Benutzermodell
Was ist Piotroskis F-Score?
Was ist Raspberry Pi?
[Python] Was ist Pipeline ...
Was ist das Calmar-Verhältnis?
Was ist Hyperparameter-Tuning?
Wofür ist Linux?
Was ist Ensemble-Lernen?
Was ist TCP / IP?
Es ist ein Mac. Was ist der Linux-Befehl Linux?
Was ist ein Hund? Django - Erstellen Sie ein benutzerdefiniertes Benutzermodell 2
Was ist Pythons __init__.py?
Was ist ein Iterator?
Was ist UNIT-V Linux?
[Python] Was ist virtualenv?
Sag mir, was eine gleichwinklige Abbildung ist, Python!
Was ist maschinelles Lernen?
Was ist ein Hund? POST-Übertragungsvolumen mit Django--forms.py
Was ist ein empfohlener Motor? Zusammenfassung der Typen
Was ist Gott? Erstelle einen einfachen Chatbot mit Python
Für mich als Django-Anfänger (2) - Was ist MTV?
Was ist Mini Sam oder Mini Max?
Was ist eine logistische Regressionsanalyse?
Ist diese Zeichenfolge ein Bruchteil?
Ist das ein Systemhandel?
Was ist Google Cloud Dataflow?
[DL] Was ist Gewichtsverlust?