小白刚学go语言,对于指针有些疑问,请大神解惑一下,代码如下:
a := [4]int{1,2,3,4}
fmt.Println(a)
var p *[4]int = &a
fmt.Println(p) // 输出 &[1 2 3 4]
fmt.Println(*p) // 输出 [1 2 3 4]
fmt.Println(p[1]) // 输出 2
fmt.Println(*p[1]) //报错 invalid indirect of p[1] (type int)
疑问:p是指向数组a的指针,通过*p可以获得数组,为什么不能*p[1]去获取数组中第二个元素呢?
你这明显p[1]可以获取,只是星号p[1]错误,p[1]本身就是一个常量值了,你还要取星号是什么意思,所以肯定报错啦p[1] (type int)
#3
更多评论
应该是这个指针指向的是数组这个数据结构,但是要使用其中的值,需要把指针再授予一个实例吧,指针本身不能再访问组合数据的子数据
我也刚学,感觉是这样 ,哈哈哈
#1