首页 > 解决方案 > 使用指针访问数组内的值

问题描述

我在 golang 中注意到我们可以使用指向数组的指针,如下所示:

arr := [3]int{1, 2, 3}
var ptr *[3]int = &arr

要获取存储在索引 n 处的值,我们可以这样做(*ptr)[n],但为什么ptr[n]还要获取我的值,它不应该输出一些随机地址吗?

语境

在 C++ 中,这是观察到的行为


int (*ptr)[5];
int arr[] = {1,2,3,4,5};

ptr = &arr;
cout <<"ptr[1] = " << ptr[1] <<endl; //Outputs an address (base address of array + 20bytes)
cout << "(*ptr)[1] = " << (*ptr)[1]<< endl; //Outputs 2

标签: arraysgopointers

解决方案


对于指向数组类型a的指针:

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

请参阅语言规范:索引表达式


推荐阅读