实在写不出来,一维数组参数怎么传二维数组

请问func ( int A[ ], int n ) 怎么传二维数组?求解答 二维数组M 将M作为实参 形参A为传入矩阵

img

#include<stdio.h>
#include<stdbool.h>
bool func(int A[],int n)
{
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            int index=i+n+1;
            if(i==j&&A[n*i+j]!=1)
            {
                return false;
            }
            if(i!=j&&A[n*i+j]!=0)
            {
                return false;
            }
        }
    }
    return true;
}
int main()
{
    int A[225];
    int n;
    scanf("%d",&n);
    for(int j=0; j<n*n; j++)
    {
        scanf("%d",&A[j]);
    }
    /*for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            printf("%d ",A[i*n+j]);
        }
        printf("\n");
    }*/
    if(func(A,n))
        printf("yes");
    else
        printf("no");
    return 0;
}

无论几维数组实际都是一个指针一串变量,传参后是几维数组取决于你怎么看待它。例如一维数组One[98]被当成二维数组Two[4][7] 那么Two[2][5]就是27+5=19,等价于One[19]。如果被当成另外数组Third[6][9],那么Third[2][5]就是One[23],29+5=23。如果还不理解的话建议把任意二维数组,一维数组的指针打出来(十进制)对比,把一维数组折叠起来就是二维数组,那就把折叠前的角标算出来对应就行了。另外c++限制不能传长宽都未知的二维数组