func main(){
a := 64
var i *int = &a
increment(i)
fmt.Println(*i) //指针类型且已修改指针地址,为什么依然是64
}
func increment(i *int){
t := *i
t++
i = &t
fmt.Println(*i)
}
有疑问加站长微信联系(非本文作者)

func main(){
a := 64
var i *int = &a
increment(i)
fmt.Println(*i) //指针类型且已修改指针地址,为什么依然是64
}
func increment(i *int){
t := *i
t++
i = &t
fmt.Println(*i)
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
楼主怕是C语言中毒比较深或者基础还需要加强, 你应该明白指针和指向指针的指针是不一样的...
increment方法是参数复制的一个指向a的地址,然后你把复制的地址再另外赋值一个地址,但是a的地址是没有变化的 初学者的理解
修改形参的值不会影响实参
increment函数里的
i = &t
改成*i = t
.go函数调用时,指针类型是赋值拷贝,也就是说在increment函数里面的i变量只是原来的指针变量的一个副本,改变指针变量的值并不会影响原来的地址,如果像楼上改成修改指针变量指向的值,则指针指向的内容会改变