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的值,是针对传递
- 指针可以被打印出来地址