xeh*_*hob 1 c c++ arrays pointers
在下面的代码,如果(*ptr)[1]不是(ptr)[1]呢?由于ptr也作为指针a是a[][].
int a[][3] = {1, 2, 3, 4, 5, 6};
int (*ptr)[3] = a;
printf("%d", (*ptr)[1]);
Run Code Online (Sandbox Code Playgroud)
没有.
a 是一个数组数组.
ptr 是指向该数组数组的[第一个元素]的指针.
*ptr 是该数组的第一个元素(它本身就是一个数组!).
ptr[0](因为*(a+n)是a[n]).(*ptr)[1] 是该结果中的第一个元素.
这也可以写ptr[0][1].
它会更清楚地写成a[0][1].
你提出的反例ptr[1]是结果中的下一个元素,仍然是一个数组.
那个宣言也很狡猾; 初始化程序在技术上是有效的,但不会按照您的想法执行,因为它似乎只列出单个维度.
总的来说,这不是很好的代码.