当前位置:   article > 正文

有两个整型变量a和b,要求把它们的值互换(使用指针变量)_【id:195】【10分】a. 交换数字,不用函数实现(指针) 题目描述 输入a和b两个整数,

【id:195】【10分】a. 交换数字,不用函数实现(指针) 题目描述 输入a和b两个整数,

 

//有两个整型变量a和b,要求把它们的值互换

  1. void Swap(int *a,int *b)
  2. {
  3.     int temp;
  4.     temp=*a;
  5.     *a=*b;
  6.     *b=temp;
  7. }

为什么不能用下面这个代码实现呢??

  1. void Swap(int *a,int *b)
  2. {
  3.     int *temp;
  4.     *temp=*a;//此句有问题
  5.     *a=*b;
  6.     *b=*temp;
  7. }

 

*a就是a,是整型变量。而*temp是指针变量temp所指向的变量。但由于未给temp赋值,因此temp中并无确定的值(它的值是不可预见的),所以temp所指向的单元也是不可预见的。所以,对*temp赋值就是向一个未知的存储单元赋值,而这个未知的存储单元中可能存储着一个有用的数据,这样就有可能破坏系统的正常工作状况。应该将*a的值赋给与*a相同类型的变量,即整型变量。所以在程序中用整型变量temp作为临时变量实现*a和*b的交换。

为什么不能用这个呢?

  1. void Swap(int a,int b)
  2. {
  3.     int temp;
  4.     temp=a;
  5.     a=b;
  6.     b=temp;
  7. }

由于“单向传送”的“值传递”方式,形参值的改变不能使实参的值随之改变。

注:不可能通过调用函数来改变指针实参的值,但是可以改变实参变量所指变量的值

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/思考机器/article/detail/63055
推荐阅读
相关标签
  

闽ICP备14008679号