直接进行指针变量的交换

来源:2-7 指针

残天一月

2018-03-01

直接上代码:

func swap1(a, b *int) {
  fmt.Println("swap1", a, b )
  a, b  = b, a
  fmt.Println("swap1", a, b )
}


func main() {
  c := 5
  d := 6
  fmt.Printf("c : %p, d : %p\n", &c, &d )
  swap1(&c, &d)
  fmt.Printf("c : %p, d : %p\n", &c, &d )
  fmt.Println(c, d)
}


如上、老师,我用了这样的方式做交换、按理说因为传递的是指针、应该是可以交换变量的啊,为啥结果还是输出: 5,6呢

写回答

1回答

Voidsand

2018-03-02

func swap1(a, b *int) {
  fmt.Println("swap1", a, b )
  *a, *b  = *b, *a
  fmt.Println("swap1", a, b )
}

这样才可以,交换的时候,你那样等于交换了值。这样写才是交换地址。

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程