有一个关于以下代码的指针我无法弄清楚:函数中的部分set_array([][9])
,为什么编译器给出允许这个而不是正常的完整表达式set_array([4][9])
。但是在main
部分中int array1[4][9]
,array1[][9]
不允许。
#include <stdio.h>
void set_array(int t_array[][9]);
int main(void) {
int array1[4][9]; // array1[][9] doesn't allowed
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 9; j++) {
array1[i][j] = j + 1;
}
}
set_array(array1);
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 9; j++) {
printf("%d ", *(*(array1 + i) + j));
//printf("%d ", array1[i][j]);
}
puts("\n");
}
return 0;
}
void set_array(int t_array[][9]) {
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 9; j++) {
t_array[i][j] = 1;
}
}
};
对此有何解释?