10个整数存放于数组a中,编写一个程序找出并输出数组中的最大值及其下标

#include<stdio.h>main(){intx[10],*p1,*p2,i;for(i=0;i<10;i++)scanf("%d",&x[i]);for(p1=... #include<stdio.h>
main(){ int x[10],*p1,*p2,i;
for(i=0;i<10;i++)
scanf("%d", &x[i] );
for(p1=x,p2=x;p1-x<10;p1++) // ? for循环的p1和p2的指针是什么意思?加上个注释解释下
if(*p1>*p2) // ?
p2= p1 ; // ?
printf("max=%d,index=%d",*p2, p2-x );
}
展开
 我来答
snowland
2015-01-07 · 知道合伙人软件行家
snowland
知道合伙人软件行家
采纳数:1229 获赞数:7313
多次参加C++算法类竞赛获奖。

向TA提问 私信TA
展开全部
遍历数组的时候可以用数组下标,也可以用这种方法。
下面解释一下这种方法--
这里的p1,p2是指针,
p1=x含义是p1指向x,这时*p的含义是p指针值得内容,和x[0]含义相同
p2=x同理
p1-x是指针减法,是两个指针相差的字节数除以一个单位的字节数。其中一个变量的字节数可以用sizeof计算,例如一个int类型变量占4字节,那么sizeof(int)=4
p1++是指针加法,是向后移动1*sizeof(int)个字节,若初始时候p1=x(*p1和x[0]等价),那么p1++后,*p1就和x[1]等价。
*p1>*p2是两个指针指向内容的比较,和整数比较一样
p2= p1 是指针赋值

整个程序含义为求10个元素中是最大值和最大值所在的位置
更多追问追答
追问
三个问号后面,写个简单的注解嘛!
还有,当输入0 1 2 3 4 5 6 7 8 9时,怎么就找到9是最大的?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式