还是一道指针类问题

[复制链接]
查看11 | 回复2 | 2011-2-9 21:04:54 | 显示全部楼层 |阅读模式
#include
int fun(int(*s)[4],int n,int k)
{int m,i;
m=s[0][k];
for(i=1;im)m=s[k];
return m;
}
main()
{int a[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};
printf("%d\n",fun(a,4,0));
}
答案是31

回复

使用道具 举报

千问 | 2011-2-9 21:04:54 | 显示全部楼层
int (*s)[4]代表一个指向数组的指针,可以认为是二维数组,示例中是a这个数组m=s[0][k]以及下面引用的s[k],可以看出参数k代表每个一维数组的第k个元素,示例中k=0,即a[0][0]、a[1][0]、a[2][0]、a[3][0]即1、11、21、31下面的语句for(i=1;im)m=s[k];是遍历a[0][0]、a[1][0]、a[2][0]、a[3][0],找到最大的数(如果其中有一个数大于m,则将m赋为这个数值)1、11、21、31这四个数中最大的是31.
回复

使用道具 举报

千问 | 2011-2-9 21:04:54 | 显示全部楼层
循环中求数组第一列的最大值,输出结果为31二维数组名等价于同等列元素个数的数组指针
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行