一条被晒干的咸鱼
2016-09-30 17:18
就是老师的那个代码
a,b使用指针,然后将地址传递过去。
因为change函数使用了void类型,void类型的有一个作用是无返回值的,表示该函数没有返回值,也就是说在change函数内部即使你把a和b的值互换了,但也只是对于这个函数本身,并不能影响到main函数的。
要使用指针,然后地址传递。
简单的说就是作用域导致此a非彼a。虽然变量名字都是a,但一个适用范围在函数里,另一个适用范围在主函数里。想要实现的话需要声明全局变量。推荐你用vs2013调试一下,看的比较直观。
因为函数参数的传递方式是单向值传递造成的。
调用 chang() 函数时,将实参 a 和 b 的值对应传递给形参 a 和 b,形参 a 和 b获得初值。当 chang() 函数执行结束,返回主函数时,形参 a和b 的内存空间被释放,即形参 a 和 b 不在存在。但是形参的值并没有传递给实参 a 和 b,所以实参 a 和 b 的值仍然是他们的初始值。
Linux C语言指针与内存
116475 学习 · 250 问题
相似问题