编写一个循环来显示tem数组一星期中每天的最高温度。循环应该调用find_largest函数

且一次传递数组的一行,。
int tem[7][24];//数组存储一星期中7天每个小时的温度
int find_largest(int a[],int n)这是一个寻找数组中最大元素的函数。需要传递int *型的参数

以下是我编写的两种循环
for(i=0;i<7;i++)
printf("%d",find_largest(tem[i],24));

int *p;
for(p=&tem[0];p<&tem[7];p++)//因为本章学了用指针取代下标访问数组,所以想用这个方法试一下
printf("%d",find_largest(*p,24));

第一个循环应该是对的。想问一下第二个循环对不对。因为本章学习了用指针取代下标访问数组。但是这个指针指向的是二维数组中的某一行,我理解的也就是指向一个一维数组。而不是什么访问数组元素。所以不确定可不可以这样。

第二个最好不要这么写,因为下标越界了。用<=&item[6]

第二个是有问题的,p应该是一个数组指针,而不是一个指向int的指针,应该定义为:

 int (*p)[24];

参照下面的代码调整你的代码即可

#include <stdio.h>

int a[3][24]={
{11,12,13,14,15,16,17,18,19,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124},
{21,22,23,24,25,26,27,28,29,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224},
{31,32,33,34,35,36,37,38,39,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324},
};

int main(int argc,char ** argv)
{
        int i,j,k,l;

        for (i=0;i<3;i++)
        {
                for(j=0;j<24;j++)
                {
                        printf("%d ",a[i][j]);
                }
                printf("\n");
        }

//====================== slash =========================

        int (*p)[24];
        p=a;

        for (k=0;k<3;k++)
        {
                for(l=0;l<24;l++)
                {
                        printf("%d ",(*p)[l]);
                }
                p++;
                printf("\n");
        }

}