请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于指针的问题

func test(arr *[5]int) {
arr[0] = 100
}
老师,感觉这个地方不应该是 *arr[0] = 100吗, 因为 arr 是指针类型, *arr[0] 才是数组中的值

正在回答 回答被采纳积分+3

1回答

ccmouse 2019-05-19 16:08:43

c语言的指针是这样。但是go语言的指针加不加*,主要在申明时有区别。在使用这个变量的时候,很多情况都可以通用。这个我们不用死记,我有一个技巧。使用指针变量的时候先尝试不加*,如果编译通过了就ok,不然再加上。

1 回复 有任何疑惑可以回复我~
  • 老师,课程里的在swap函数中,假如*a,*b = *b,*a的*都去掉,那么实际的值就没有被改变,这又是为什么呢
    回复 有任何疑惑可以回复我~ 2020-06-26 20:40:19
  • 函数的参数都是值传递。函数里面的a b和调用它时候的a b不是同一个变量,是一份拷贝。在函数里面,a b的值确交换了,但是外面并没有。可以在swap函数中打印a b,来确认在swap里面的确是换了。
    我这里写了一个例子:https://play.studygolang.com/p/DIGrEDKqQ_Z
    swap1是错误的,交换的结果没有体现出去。
    swap2是正确的,a, b其实并没有交换,它们是地址,交换的是a,b所指向的内存的值。虽然a, b是外面调用时候的&v1, &v2的拷贝,但a和&v1, b和&v2都分别指向同一内存地址,就是分别为v1, v2的地址。
    回复 有任何疑惑可以回复我~ 2020-06-29 12:16:43
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信