为什么指针会产生错误“无效间接”?

时间:2018-06-14 15:10:02

标签: arrays pointers go

p是一个指向数组arr的指针,我们可以使用arr获取数组*p,但为什么不能使用{{1}来获取第二个元素}}?

会导致错误:

  

p [1]的无效间接(int类型)

以下代码:

*p[2]

1 个答案:

答案 0 :(得分:3)

因为*p[1]表示*(p[1])(p[1])int,您无法解除引用。

首先使用括号取消引用指针,并将结果编入索引:

fmt.Println((*p)[1])

另请注意,p[1]不带括号和解除引用是有效的,因为p是指向array的指针,并引用Spec: Index expressions:

  

对于pointer到阵列类型的一个:

     
      
  • a[x](*a)[x]
  • 的简写   

但请注意,指向切片类型的指针不允许这样做。