017_go语言中的指针

代码演示

package main

import "fmt"

func zeroval(ival int) {
    ival = 0
}

func zeroptr(iptr *int) {
	*iptr = 0
}

func main() {
	i := 1
	fmt.Println("initial:", i)

	zeroval(i)
	fmt.Println("zeroval:", i)

	zeroptr(&i)
	fmt.Println("zeroptr:", i)

	fmt.Println("pointer:", &i)
}

代码运行结果

initial: 1
zeroval: 1
zeroptr: 0
pointer: 0xc420012068

代码解读:

  • 以上例子解释了指针和值的区别
  • 第一个函数用的是值传递,第二个函数用的是指针传递
  • 函数zeroval得到了i的值,传给了形参ival,但是并没有改变i的值,因此是值传递
  • 函数zeroptr得到了i的指针,传给了形参iptr,所以最终可以改变i的值,是针对传递
  • 指针可以被打印出来地址
posted @ 2018-03-31 15:45  Joestar  阅读(124)  评论(0编辑  收藏  举报