我确定qinint q[6][4]是 类型(**q)[4],即pointer to a pointer to an integer array sized 4。但是我有这本书(我觉得它很可疑!!)说int q[][4]函数定义void foo(int q[][4]){}中的部分与int (*q)[4]. 我对这本书很矛盾,但让我提出一些在我脑海中突然出现的问题供您考虑.您的详细解释非常受欢迎。
1) 声明时,in的类型和qinint q[][4]的类型一样int q[6][4]吗?与书上所说的相反,我认为q[][4]什么都不q[0][4]是,我觉得 q 是类型(**q)[4],而不是(*q)[4]。我是对的吗?你对此有何看法?
2) (最令人困惑的一点)我知道传递int *q和int q[](或int q[4])在 C 中是相同的,因为后者减少到前者。但我已经从编译器验证了int (*q)[5]与 不同的类型int (*q)[4],那么传递之间有什么区别函数的参数A) int (*q)[] B)int (*q)[4]和C)int (*q)[5] ? 请详细回答这部分。
3)传递int q[][4]给函数与传递int q[6][4]C 有何不同?在这两种情况下都q归约到吗?(**q)[4]