英文:
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 = &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 = &arr;
cout <<"ptr[1] = " << ptr[1] <<endl; //Outputs an address (base address of array + 20bytes)
cout << "(*ptr)[1] = " << (*ptr)[1]<< endl; //Outputs 2
答案1
得分: 3
对于指向数组的指针 a
,a[x]
是 (*a)[x]
的简写形式。
参考语言规范:索引表达式。
英文:
> For a
of pointer to array
> type:
> - a[x]
is shorthand for (*a)[x]
See language spec: Index Expressions.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论