以下代码有一个指针我无法理解:在函数 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;
}
}
};
有关这个的任何解释吗?
set_array(&array1[0])
吗? - mko