函数:函数参数使用注意的地方

什么时候应该传递指针?

函数传递参数传指针进去,拷贝指针,对值修改。

func test(x *int) {
    *x += 100
}

func main() {
    x := 1
    test(&x)

    println(x)
}

函数传递默认都是值拷贝,如果传的是x,把x拷贝一份,接下来对x的修改和外面没有关系。第二种是x有个指针p指向它,然后把p传递进去,复制了p的拷贝p1p1也指向x,通过p1修改是同一个x,这是传指针常见的做法。

指针和二级指针的区别。如何用二级指针实现 out 参数?

声明一个空指针p没有指向任何一个位置,传递函数里面,这个函数创建一个对象,让p指向这个对象。当p传递函数的时候实际上有个指针叫p1,创建对象也是p1指向这个对象和原来p没有关系,没有办法让外面p指向它,只是说让新的p1指向新对象,我们怎么样让p指向它,使用二级指针。

func test(p1 **int) {
    y := 100
    *p1 = &y
}

func main() {
    // 一个指针
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值