#include <stdio.h>
void main()
{
void search(float (*p)[4],int n);
float score[3][4]={{67,45,78,55},{66,89,98,77},{46,77,88,99}};
search(score,3);
}
void search(float (*p)[4],int n)
{
int i,j,flag;
for(i=0;i<n;i++)
{
flag = 0;
for(j=0;j<4;j++)
{
if(*(*(p+i)+j)<60)
{
flag = 1;break;
}
}
if(flag == 1)
{
printf("NO.%d fail ,his scores are ",i);
for(j=0;j<4;j++)
{
printf("%.2f ",*(*(p+i)+j));
}
}
printf("\n");
}
}
总结:二维数组中,实参与形参传值问题。
①当形参为指针变量(形如:int *p)时,二维数组给的实参需要给出指针的变量的形式:*score或者&score[0][0].
②当形参为指向一维数组时(形如:int (*p)[4])时,二维数组直接给出数组名score,一维数组名为数组的首地址,二维数组名为一维数组名的首地址。