论坛: 编程破解 标题: 一个指针变量例程的疑问[已知,感谢286] 复制本贴地址    
作者: TecZm [teczm]    版主   登录
老谭《C语言程序设计》中有个例程,如下:

main()
{
int *p1,*p2,*p,a,b;
scanf("%d.%d",&a,&b);
p1 = &a;
p2 = &b;
if(a<b)
{p=p1;p1=p2;p2=p;}
printf("\na =%d.b = %d\n\n",a,b);
print("max =%d,min =%d\n",*p1,*p2);
}

我的疑问是 p 是什么? p没有赋值,{p=p1;p1=p2;p2=p;}这怎么理解呢?



[此贴被 TecZm(teczm) 在 09月02日09时42分 编辑过]

地主 发表时间: 04-09-02 09:26

回复: 286 [unique]   版主   登录
p=p1;p1=p2;p2=p;

p,p1,p2是三个杯子,分别为空,盛满红茶水,盛满绿茶水。
要求,把p1,p2两杯中的茶水交换。
一个可行的办法就是红倒入空(p=p1),然后绿倒入原装红的(现在为空)(p1=p2),空倒入绿(此时空有红茶,绿为空)(p2=p)。

不能说p没有赋值,p=p1就是赋值。


B1层 发表时间: 04-09-02 09:37

回复: TecZm [teczm]   版主   登录
哦,明白了。谢谢!

B2层 发表时间: 04-09-02 09:41

回复: SysHu0teR [syshunter]   版主   登录
我现在明白了,286肯定是教师!

B3层 发表时间: 04-09-02 13:09

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号