使用指针访问数组内的值。

huangapple go评论81阅读模式
英文:

Access values inside array using pointers

问题

我注意到在Go语言中,我们可以使用数组指针来进行操作,如下所示:

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; //输出一个地址(数组的基地址 + 20字节)
cout << "(*ptr)[1] = " << (*ptr)[1] << endl; //输出2

请注意,以上是你要翻译的内容。

英文:

I've noticed in golang that we can use a pointer to an array as follows:

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

To get value stored at an index n we can do (*ptr)[n], but why does ptr[n] also fetch me the value, Shouldn't it output some random address ?

Context

In C++, this is the observed behaviour


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

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

答案1

得分: 3

对于指向数组的指针 aa[x](*a)[x] 的简写形式。

参考语言规范:索引表达式

英文:

> For a of pointer to array
> type:
> - a[x] is shorthand for (*a)[x]

See language spec: Index Expressions.

huangapple
  • 本文由 发表于 2021年10月17日 18:33:23
  • 转载请务必保留本文链接:https://go.coder-hub.com/69603429.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定