Ich wusste nicht, was der Zeiger war, also habe ich ihn nachgeschlagen. Diesmal habe ich es in Go geschrieben.
pointer_practice.go
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
x := 2
/*Adresse der Variablen x(Der Speicherort des Speichers, in dem die Variable x gespeichert ist)Geschäft*/
/*Eine Variable, die die Adresse einer bestimmten Variablen speichert, wird als Zeigervariable bezeichnet.*/
x_pointer := &x
fmt.Println(x)
fmt.Println(x_pointer)
/*Zeigervariable x_Ruft den Wert ab, der an der im Zeiger gespeicherten Adresse vorhanden ist*/
/*Wenn Sie sich Speicher als js-Objekt und Adresse als Objektschlüssel vorstellen, Speicher[Adresse(x_pointer)] =Bild von 2*/
fmt.Println(*x_pointer)
arg := 0
arg_pointer := &arg
test_pointer(arg_pointer)
/*Gleiches Ergebnis*/
fmt.Println(arg)
fmt.Println(*arg_pointer)
/*Wert kann nicht umgeschrieben werden(Es kann in der Funktion neu geschrieben werden, hat jedoch keinen Einfluss auf den Wert der als Argument festgelegten Variablen.) */
/*Holen Sie sich das Umschreibergebnis in der Funktion mit return*/
test_val(arg)
fmt.Println(arg)
}
/*Eine Funktion, die eine Zeigervariable als Argument verwendet(Einen Zeiger übergeben) */
func test_pointer(val_pointer *int) {
/*Samen mit der Zeit(Quelle von Zufallszahlen?)Erhalten Sie jedes Mal den gleichen Wert ohne Seed*/
rand.Seed(time.Now().UnixNano())
/*Ruft die in der Zeigervariable gespeicherte Adresse ab->Geben Sie den Speicherort des Speichers an, um den Wert nach Adresse neu zu schreiben->0 der im angegebenen Speicherort gespeicherte Wert~Schreiben Sie auf eine Zufallszahl von 999 um*/
*val_pointer = rand.Intn(1000)
}
/*By-Value-Funktion(Das Übliche) */
func test_val(val int) {
rand.Seed(time.Now().UnixNano())
val = rand.Intn(1000)
}
Die Methode zum Festlegen des Argumenttyps unterscheidet sich zwischen der Funktion, die als Wert übergeben wird (den Wert der Variablen empfängt), und der Funktion, die als Zeiger übergeben wird (die Adresse der Variablen empfängt).
/*By-Value-Funktion*/
func(Argument Argumenttyp) { /*Funktionsverarbeitung*/ }
/*Bevor der vom Zeiger übergebene Funktionstypname "*Es ist angehängt*/
func(Streit*Argumenttyp) { /*Funktionsverarbeitung*/ }
Recommended Posts