请问func ( int A[ ], int n ) 怎么传二维数组?求解答 二维数组M 将M作为实参 形参A为传入矩阵
#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++限制不能传长宽都未知的二维数组