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 指向的值”。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ErizJ

觉得好的话给小弟一点鼓励吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值