C语言刷题(20):二维数组与指针之间的关系,查找一门以上课程不及格学生,输出他们的全部课程的成绩。

#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,一维数组名为数组的首地址,二维数组名为一维数组名的首地址

发布了45 篇原创文章 · 获赞 7 · 访问量 1606

猜你喜欢

转载自blog.csdn.net/qq_38173631/article/details/104000630