为了账号安全,请及时绑定邮箱和手机立即绑定

理解 Go 中的指针

理解 Go 中的指针

Go
MYYA 2021-09-10 17:34:44
我试图了解指针在 Go 中是如何工作的。在一般层面上,我几乎没有使用指针的经验,因为我主要使用 javascript。我写了这个虚拟程序:func swap(a, b *int) {    fmt.Println("3", &a, &b)    *a, *b = *b, *a    fmt.Println("4", a, b)}func main() {    x := 15    y := 2    fmt.Println("1", x, y)    fmt.Println("2", &x, &y)    swap(&x, &y)    fmt.Println("5", x, y)}打印以下结果:$ go run test.go1 15 22 0x208178170 0x2081781783 0x2081ac020 0x2081ac0284 0x208178178 0x2081781705 2 15我有几个问题:据我所知,&x给出了x存储的地址。要获得 x 的实际值,我需要使用*x. 然后,我不明白为什么&x是 type *int。由于*x和&x都是 type *int,我根本不清楚它们的区别。在我的交换函数中, using*a, *b = *b, *a和 using 有a, b = b, a什么区别?两者都有效,但我无法解释为什么...为什么在第 2 步和第 3 步之间打印时地址不同?例如,为什么我不能修改直接分配&b给的地址&a?非常感谢您的帮助
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信