我想知道为什么在C语言中这是可能的:
int MATRICE[20][20];
int *p; p = MATRICE[19]; is equal to p = &(MATRICE[19][0]);我试图用这种方式来解释它:我认为标签"MATRICE“是一个常量指针,类似于一个指针数组,因此当涉及到第20个指针( MATRICE19 )时,它也指向与MATRICE19所指向的相同的东西。我的想法正确吗?
发布于 2022-10-04 20:47:33
在表达式中使用的数组(罕见异常)被转换为指向它们的第一个元素的指针。
来自C标准(6.3.2.1 L值、数组和函数指示符)
3如果数组对象具有寄存器存储类,则行为未定义。
这句话
MATRICE[19]生成类型int[20]的一维数组,该数组在此代码段中用作初始化器(作为赋值中的右侧表达式)时隐式转换为指向类型int *的第一个元素的指针。
int *p; p = MATRICE[19];https://stackoverflow.com/questions/73953476
复制相似问题