什么时候应该传递指针?
函数传递参数传指针进去,拷贝指针,对值修改。
func test(x *int) {
*x += 100
}
func main() {
x := 1
test(&x)
println(x)
}
函数传递默认都是值拷贝,如果传的是x
,把x
拷贝一份,接下来对x
的修改和外面没有关系。第二种是x
有个指针p
指向它,然后把p
传递进去,复制了p
的拷贝p1
,p1
也指向x
,通过p1
修改是同一个x
,这是传指针常见的做法。
指针和二级指针的区别。如何用二级指针实现 out 参数?
声明一个空指针p
没有指向任何一个位置,传递函数里面,这个函数创建一个对象,让p
指向这个对象。当p
传递函数的时候实际上有个指针叫p1
,创建对象也是p1
指向这个对象和原来p
没有关系,没有办法让外面p
指向它,只是说让新的p1
指向新对象,我们怎么样让p
指向它,使用二级指针。
func test(p1 **int) {
y := 100
*p1 = &y
}
func main() {
// 一个指针