Menu
CoddyTech

什么是指针

Coddy Golang 中的函数和指针 课程的第 2 课,共 19 课。

我们首先要回答的问题是,什么是指针?我们已经学习过变量,并把变量定义为存储值的盒子。而指针是存储地址而不是值的盒子。

在任何编程语言中创建变量时,这个变量都会存储在内存中,而内存中的每个空间都有一个地址。例如,如果我们这样定义一个变量:

var name = "Coddy"

我们可以这样表示它在内存中的情况:


 

要从内存中获取任何值,我们都需要一个地址。因此,地址会告诉我们这个空间在内存中的位置。

而指针是一个存储内存地址而不是值的盒子。这就是我们称它为指针的原因,因为它指向一个内存地址。

定义指针的语法如下:

var name = "Coddy"
namePointer := &name

这里,我们定义了一个名为 namePointer 的指针,并用 & 指向变量 name 的地址。

我们也可以像这样定义一个初始值为 nil 的新指针:

var coddy *string

这个语法中的 * 会创建一个名为 coddy、类型为 string 的新指针,而指针的初始值是 nil。

要打印指针中存储的地址,只需像这样传入指针的名称:

fmt.Println(coddy)

要打印指针地址中存储的值,可以使用星号 *:

fmt.Println(*coddy)
challenge icon

挑战

简单
  • 声明一个名为 a、值为 200 的变量。
  • 声明一个名为 aPointer、类型为 int 的新指针。
  • 将变量 a 的地址赋给指针 aPointer。
  • 打印指针 aPointer 和变量 a 的值。

亲手试试

package main

import "fmt"

func main() {
    // 声明一个名为 a 的变量,值为 200。
     

    // 声明一个新的 int 类型指针,名为 aPointer。
    
    // 将变量 a 的地址赋给指针 aPointer。
     

    // 打印指针 aPointer 和变量 a 的值。
    fmt.Println("the value of the pointer:",?)
    fmt.Println("the value of the variable :",?)
}

Golang 中的函数和指针中的所有课

自己练习: Go 在线编译器