请帮忙分析一个书上的指针程序:输出两个数中较大的数

来源:百度知道 编辑:UC知道 时间:2024/05/30 02:42:19
#include "stdio.h"
void main()
{
int * p1,* p2,* p,a,b;
scanf("%d,%d",&a,&b);
p1=&a;p2=&b;
if(a<b){p1=&b;p2=&a;}
printf("a=%d,b=%d\n\n",a,b);
printf("max=%d,min=%d",* p1,* p2);

}
@1:上面的程序中定义一个 *p 干什么,我把它去掉再运行程序一点影响都没有

@2:p1=&b与*p1=a有什么区别吗,为什么我将p1=&b改成*p1=a 之后程序会显示错误

第一条,你说的很对。
第二条:是关于指针问题。
程序中,p1,p2都是指向整形的指针。p1=&b,即p1的值是b在内存中的地址,也就是常说的p1指向b.
*p1=a;这条语句是非常危险的。因为这时p1还没有具体的值,还不知道p1指向谁。就算它有一个值,那也是内存中某个地址,现在系统中那个倒霉的程序的数据被你改成了a。所以就出错了。