指针

指针,是一个比较高级的概念。

我们之前接触了变量,知道变量是代表了一个东西。但是,变量存储在什么地方呢?在编程的世界里,一切东西都是存储在计算机的内存中的。那既然变量是存储在内存中,那自然是有一个地址来让我们可以在内存中访问到这个变量的。这个地址,即为指针。

也就是说,指针保存的是变量的内存地址。

想要创建一个指针我们可以这样做:

使用 *T 创建一个指向类型 T 的值的指针。

// 创建一个指向类型 int 的值的指针 p。其零值是 `nil`。
var p *int

或者使用 & 符号会生成一个指向其作用对象的指针。

var i int = 1
var p = &i // 指针 p 指向其作用对象变量 i。

创建了指针之后,应该怎么使用它呢?答案是通过使用 * 啦:

fmt.Println(*p) // 通过指针 p 读取 i
*p = 2          // 通过指针 p 设置 i,此时,变量 i 的值就变成 2 啦

通过指针,我们可以直接修改原始作用对象的值。

我们来看一个比较复杂的例子:

package main

import "fmt"

func main() {
    i, j := 42, 27

    p := &i         // 指针 p 指向变量 i
    fmt.Println(*p) // 通过指针 p 读取变量 i 的值。=> 42
    *p = 21         // 通过指针 p 设置变量 i 的值
    fmt.Println(i)  // => 21

    p = &j         // 将指针 p 修改为指向变量 j
    *p = *p + 3    // 通过指针 p 访问并修改变量 j
    fmt.Println(j) // => 30
}

我们会在稍后的章节中继续学习指针的使用场景。

results matching ""

    No results matching ""