|
20鱼币
本帖最后由 拈花小仙 于 2014-7-5 19:47 编辑
#include <iostream>
using namespace std;
int main()
{
int a[2][3] = { {1,2,3}, {4,5,6} };
int (*p)[3] = a;
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
cout << *(*(p + i) + j) << endl; // *(p+i) = p[i]; 为什么此时 p是一个地址
}
}
return 0;
}[/i] |
最佳答案
查看完整内容
已知 int a[5] 则 a[3]是int类型
已知 int a[5][8] a[3]是什么类型呢,可以把这个等价为:typedef int Vec[8] Vec a[5];则a[3]类型为Vec,也就是int[8]这个类型
已知int (*p)[3] =...; 可以把这个等价为:typedef int Vec [3]; Vec *p;则 p[3]的类型和p[0]的类型一样,p[0]又等价于*(p+0),也就是*p,而*p类型是Vec,也就是 int[3]类型。所以严格说,p是一个int[3]类型,只不过数组常常转化为首元素的指针。
|