习题9.1

请结合例9.6程序分析下面两个程序能否实现两数交换功能?并说明为什么?
(1)

*void Swap(int *x,int *y)
{
  int *pTemp;
  *Temp=*x;
  *x=*y;
  *y=*pTemp;

程序不能够实现交换功能,int *pTemp;定义了一个指向整型变量变量的变量,指针变量的定义只是声明了指针变量的名字及其所能指向的数据类型,并没有说明指针变量究竟指向了哪里。在使用指针变量之前必须将其指向确定的内存单元。
习题9.1_第1张图片
(2)

void Swap(int *x,int *y)
{
  int *pTemp;
  pTemp=x;
  x=y;
  y=pTemp;
}

程序能够运行,但是不能够实现交换功能。在函数Swap()中,只是临时的将它们临时的交换过来了,但是在返回主函数时,由于x和y是动态局部变量,分配给x和y的储存空间被释放,x和y对应的储存空间变成了随机值,Swap()做了无用功。
习题9.1_第2张图片

你可能感兴趣的:(习题9.1)