gpt4 book ai didi

arrays - 为什么指针会产生错误 "invalid indirect"?

转载 作者:IT王子 更新时间:2023-10-29 02:31:37 24 4
gpt4 key购买 nike

p是一个指向数组arr的指针,我们可以通过*p获取数组arr ,但是为什么用*p[2]获取不到第二个元素呢?

会报错:

invalid indirect of p[1] (type int)

以下代码:

arr := [4]int{1,2,3,4}
var p *[4]int = &arr
fmt.Println(p) // output &[1 2 3 4]
fmt.Println(*p) // output [1 2 3 4]
fmt.Println(p[1]) // output 2
fmt.Println(*p[1]) //generate an error:invalid indirect of p[1] (type int)

最佳答案

因为 *p[1] 表示 *(p[1])(p[1]) 是一个 int,您不能取消引用。

先用括号解引用指针,对结果进行索引:

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

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

For a of pointer to array type:

  • a[x] is shorthand for (*a)[x]

但请注意,对于 slice 类型的指针不允许这样做。

关于arrays - 为什么指针会产生错误 "invalid indirect"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50860695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com