且一次传递数组的一行,。
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");
}
}