论坛: 编程破解 标题: 计算机二级C语言的一道题,请给为帮忙解答 复制本贴地址    
作者: jaychou [jaychou]    论坛用户   登录
本帖由 [BearKing] 从 << 菜鸟乐园>> 转移而来

以下不能对两个整形值进行交换的是
第一个:main()
{int *a=0,*b=0;
*a=10,*b=20;
swap(a,b);
printf("%d,%d\n",*a,*b);}

swap(int *p,int *q)
{int t;
t=*p;*p=*q;*q=t;}


第二个:main()
{int a=10,b=20,*x=0,*y=0;
*x=&a,*y=&b;
swap(x.y);
printf("%d,%d\n",a,b);}

swap(int *p,int *q)
{int t;
t=*p;*p=*q;*q=t;}

另外两个肯定都对,这两个我觉得两个都不对,因为指针是不能在不附地址的情况下直接被附值的,而且指针被附0就等于是null的空指针,怎么还能指向呢?请各位帮忙给我解释一下


地主 发表时间: 05-08-21 22:31

回复: zhengzheng [zhengzheng]   论坛用户   登录
这个是��传递和地址传递二种之间的问题。
第二个正确
好久没用过C了,不知道对不对!!

B1层 发表时间: 05-08-22 11:32

回复: agan [ganhuilu]   论坛用户   登录
交换两个值不用这么复杂的啊,
a=c,b=a,c=b好象就可以了哦

B2层 发表时间: 05-08-22 11:42

回复: secondkahn [secondkahn]   论坛用户   登录
应该是第二个


B3层 发表时间: 05-08-24 15:06

回复: zhuantou [zhuantou]   论坛用户   登录
其实要想知道对不对,只要把这段代码用vc编译运行一下,就知道啦,
我认为是二个,原因就出在*x = &a, *y = &b 应给是 x = &a, y = &b 就应该对啦

B4层 发表时间: 05-08-27 15:22

回复: John [fyhjx023]   论坛用户   登录
随便看看就知道,第一个错误,第二个正确的了

B5层 发表时间: 05-09-11 14:56

论坛: 编程破解

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

粤ICP备05087286号