|
![]() | 作者: 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号