请解释几句语句意思?谢谢!C语言入门

来源:百度知道 编辑:UC知道 时间:2024/09/22 21:16:59
#include <stdio.h>
void main()
{
char a[5],*p[5],*max;
int i;
for (i=0;i<5;i++)
p[i]=&a[i];
for (i=0;i<5;i++)
scanf ("%c",p[i]);
max=p[0]; //为什么不写成:max=&p[0]
for (i=1;i<5;i++)
if (*max<*p[i])
max=p[i]; //为什么改成*max=*p[i]结果也一样?哪个对呢?
printf ("%c\n",*max);

}
抱歉忘了加分!回答合适的我会追加分的!
只用解释后面注释//部分我问的!谢谢!

因为p[i]=&a[i];
所以所有应该写&a的地方都可以用p代替

max=p[0]; //为什么不写成:max=&p[0]
char *p[5];p是指针数组,就是p5个元素全都是char *的指针,所以不用&
char *p[5];等同于char *p[0],*p[1]...等同于char *p1,*p2...等同于char *a,*b...;

max=p[i]; //为什么改成*max=*p[i]结果也一样?哪个对呢?
max=p[0]; 2个都是地址

(*max<*p[i]) 是比较解引后的值

指针。

数组a,指针数组p,指针max

把数组a的每项的地址输给相应的p的项;
利用p项对a进行格式化输入;
找最大值;

这个例程主要是让你理解指针的作用。

max=p[0]; // p[0] 是 char* 类型,max 也是
max=p[i]; // 同上
*max = *p[i] // 如此则 max 本身的值没变,*max 的值变了
max = p[i] // 如此则 max 本身的值变了,*max 也跟着变
以上两种写法,都使 *max 的值发生了变化,而后一个写法还改变了 max 的值,不存在对不对的问题,只存在你想不想改变 max 本身值的问题!