我是初学者,我想了解多维数组的工作原理。
到目前为止,我得到了这段我不理解的代码片段:
int arr[] = { 3, 5, 6, 7, 9 };
int (*ptr)[5] = &arr;
好的。 我知道 ptr 是一个指向 5 个元素的数组的指针。
但是 '&' 在做什么? ptr 是否指向'arr'的起始地址?但是“arr”不是一个地址吗?为什么会有一个'&'呢? 还。索引5的意义是什么?因为当我尝试给出 5 以外的任何其他数字时,它会引发错误。
如果这一切听起来很愚蠢,我很抱歉,但我很困惑!帮助!
最佳答案
在这里,您有一个变量 arr
,类型为 array of 5 int
:
int arr[] = { 3, 5, 6, 7, 9 };
在这里,您声明了一个指向 5 int 数组
的指针 ptr
:
int (*ptr)[5]
这会获取 arr
的地址,类型为 pointer to array of 5 int
&arr
并且这个赋值有效,因为指针类型是相等的:
int (*ptr)[5] = &arr;
现在,如果您将 ptr
的类型更改为另一种类型,即 pointer to array of 6 int
:
int (*ptr)[6];
然后分配不再有效,因为现在指针类型不匹配。这就是您收到错误的原因。
注意:此代码中的 [5]
不索引任何内容,而只是变量声明的一部分(数组中的元素数)
关于c - 访问数组元素时指针的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55637226/