发现以前真的是能少用指针就少用指针,现在硬着头皮下决心要把指针给学好!!!
关于二维数组传参,本来如果维数是一定的话,我还知道可以用一个指向数组的指针来接收,但是这题要求的是维数不定。哎,后来一想可以把二维数组几组一维数组,这样把一维数组的开始位置作为实参传递,然后函数的形参就定义为一个指针类型就好。这题的代码如下:
#include <stdio.h>
int identity_matrix(int *p,int nsize)//判断是否为单位矩阵
{
for (int i=0;i<nsize;i++)
{
for (int j=0;j<nsize;j++)
{
if (i!=j&&(*((p+i*10)+j))!=0)
{
return 0;
}
else
if ((i==j)&&(1!=*((p+i*10)+j)))
{
return 0;
}
}
}
return 1;
}
void print_arr (int *a,int nsize)//输出矩阵
{
for (int i=0;i<nsize;i++)
{
for (int j=0;j<nsize;j++)
{
printf("%d ",*((a+i*10)+j));
}
printf("/n");
}
}
void main()
{
int matrix[][10]={{1},{0,1},{0,0,1},{0,0,0,1},{0,0,0,0,1},{0,0,0,0,0,1},{0,0,0,0,0,0,1},{0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,1}};
printf("输入的矩形matrix为: /n");
print_arr(matrix[0],10);
int matrix_result=identity_matrix(matrix[0],10);
if (matrix_result)
{
printf("此矩阵为单位矩阵!");
}
else
{
printf("此矩阵为非单位矩阵!");
}
}
书是要多看,问题是要多想,加油!活在当下!