目录

Golang-和-

Golang |* 和 &

在 Golang(Go 语言)中, *& 主要用于指针操作,它们的作用如下:

1. & (取地址符)

& 用于获取变量的内存地址(即指针)。

package main
import "fmt"

func main() {
    a := 10
    p := &a  // 获取变量 a 的地址,p 是一个指向 a 的指针
    fmt.Println("a 的值:", a)
    fmt.Println("a 的地址:", &a)
    fmt.Println("p 的值(即 a 的地址):", p)
}

输出示例(地址因环境不同而变化):

a 的值: 10
a 的地址: 0xc000014088
p 的值(即 a 的地址): 0xc000014088

2. * (指针解引用)

* 用于指针解引用,即通过指针访问指针指向的值。

package main
import "fmt"

func main() {
    a := 10
    p := &a    // p 是指向 a 的指针
    fmt.Println("p 指向的值:", *p) // 解引用 p,获取 a 的值

    *p = 20   // 通过指针修改 a 的值
    fmt.Println("修改后 a 的值:", a)
}

输出:

p 指向的值: 10
修改后 a 的值: 20

3. * 还用于声明指针类型

在声明指针变量时, * 用于指定变量是指针类型。例如:

var p *int  // 声明一个 int 类型的指针变量 p

只有在解引用时, *p 才表示指针指向的值。


4. 总结区别

符号作用
&取地址,获取变量的内存地址
*解引用指针,获取指针指向的值,也用于声明指针类型

如果你对指针的理解还不太清楚,可以思考:

  • &a 相当于 “我要 a 的地址”。
  • *p 相当于 “我要 p 指向的值”。

希望这能帮助你理解 *& 的区别!