p
是一个指向数组arr
的指针,我们可以使用arr
获取数组*p
,但为什么不能使用{{1}来获取第二个元素}}?
会导致错误:
p [1]的无效间接(int类型)
以下代码:
*p[2]
答案 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]
但请注意,指向切片类型的指针不允许这样做。