c-关系矩阵指针



我想知道为什么在C中这是可能的:

int MATRICE[20][20];
int *p; p = MATRICE[19]; is equal to p = &(MATRICE[19][0]);

我试图用这种方式来解释它:我认为标签";MICE";作为一个常量指针,就像一个指针数组,所以当涉及到第20个指针(MICE[19](时,它也指向与MICE[19][0]相同的东西。我的想法正确吗?

在表达式中使用的数组(极少数例外(会转换为指向其第一个元素的指针。

来自C标准(6.3.2.1值、数组和函数指示符(

3除非它是sizeof运算符或一元&运算符,或者是用于初始化数组的字符串文字具有类型为"的数组的表达式转换为类型为"的表达式指向指向首字母的类型"元素,并且不是左值。如果数组对象具有寄存器存储类,行为未定义。

此表达式

MATRICE[19]

生成类型为int[20]的一维数组,当用作此代码片段中的初始值设定项(作为赋值中的右侧表达式(时,该数组被隐式转换为指向其类型为int *的第一个元素的指针

int *p; p = MATRICE[19];

最新更新