什么类型,多维数组的名称是什么?

时间:2017-07-28 19:22:45

标签: c++ pointers multidimensional-array

我试图掌握多维数组中指针的概念,有些事情我想澄清一下。让我们举一个小的二维数组B作为例子:

int B[4][3];
int i;        //ranges from 0-3

我的问题是以下元素是什么类型:

B+i      
*(B+i)

让我感到困惑的是,当我跑步时:

std::cout<<B;
std::cout<<*B;

输出相同。 如果有人能澄清这一点,我会很高兴。

1 个答案:

答案 0 :(得分:3)

B衰败到int (*)[3]。此处的规则是删除最左边的范围,然后添加*

因此,B+i也是int (*)[3]

因此,*(B+i)int [3](衰减为int *)。

B == *B并不难解释。 B是第一个子数组的地址(也称为B[0]的地址),*B是该子数组的第一个元素的地址(也称为B[0][0]的地址)。< / p>

类型说明:

C / C ++中的所有多维数组实际上都是嵌套的1D数组。

您的int B[4][3];可被视为T B[4],其中Tint [3]

然后衰变发生在普通1D阵列上:T B[4]变为T (*)。由于Tint [3]T (*)int (*)[3]