不将2d数组的行数传递给c中的函数

1 c rows sizeof multidimensional-array

我可以使用c中的sizeof运算符进行一些计算,以获取一个函数内的行计数,该函数只接收一个二维数组作为参数而没有任何关于此传递数组中行或列的数据?

void main(void){
    int A[5][6];
    int columnsC = sizeof(A[0]) / sizeof(int);
    int rowsC = ( sizeof(A)/sizeof(int) ) / columnsC;
    printf("rows: %d\ncolumns: %d\n", rowsC, columnsC);

    getch();
}
Run Code Online (Sandbox Code Playgroud)

以前的代码对我有用,但我找不到有用的资源知道如何在以下标题的函数上应用它:

void fun(int arr[][10])
Run Code Online (Sandbox Code Playgroud)

我正在学习关于编程语言原理的课程,有时候会以不同的方式思考问题并寻找学习资源,这有很大帮助,但这次显然不是.

我很佩服任何帮助.

P.P*_*.P. 6

没有.传递给函数时无法找到数组的大小.传递给函数时,数组衰减为指针.

这个:

void fun(int arr[][10])
Run Code Online (Sandbox Code Playgroud)

实际上是合成糖:

void fun(int (*arr)[10])
Run Code Online (Sandbox Code Playgroud)

相反,您可以将大小作为thrid参数或大小作为数组本身的元素传递.