论坛: 编程破解 标题: 计算机二级C语言的一道题,请各位帮忙解答 复制本贴地址    
作者: jaychou [jaychou]    论坛用户   登录
以下不能对两个整形值进行交换的是
第一个: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:30

回复: xiazhifei [xiazhifei]   论坛用户   登录
设p为指针变量,则p==0表明p是空指针,它不指向任何变量;p!=0表示p不是空指针。空指针是由对指针变量赋予0值而得到的。例如: #define NULL 0 int *p=NULL; 对指针变量赋0值和不赋值是不同的。指针变量未赋值时,可以是任意值,是不能使用的。否则将造成意外错误。而指针变量赋0值后,则可以使用,只是它不指向具体的变量而已。


B1层 发表时间: 05-08-23 10:21

回复: saman [saman]   论坛用户   登录
我看着没错啊,交换数据地址,然后达到交换数据的效果,对啊


B2层 发表时间: 05-08-24 01:22

论坛: 编程破解

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

粤ICP备05087286号