c语言中函数PPT C语言中函数的形参和实参( 二 )


c语言 请问这个PPT的意思是不是说这样用函数交换最终数组还是不会变的 , 为什么不变?是c语言中函数PPT的 。这个PPT就是为c语言中函数PPT了说明用void swap2(int x, int y)交换不了通过形参传入c语言中函数PPT的元素 。
为什么交换不了?
因为void swap2(int x, int y)的形式参数是传值模式 。
C/C++语言规定c语言中函数PPT:以传值模式调用函数,在调用过程中,函数需先将形参做一个拷贝,然后基于新的拷贝进行计算 。
如上例,执行调用swap2(a[0],a[1]) , swap2会先将a[0]的值拷贝给x , 将a[1]的值拷贝给y,然后在函数体内交换x、y的值,这样对a[0]、a[1]毫无影响 。
怎样通过函数调用交换a[0]、a[1]的值?
答案是:通过传引用调用,即将函数声明为void swap2(int x, int y) 。
C++语言规定:引用可以看作是变量的别名 。别名类似于人的小名之类,一个人大名、小名虽不同 , 但都指的是这个人 。
同样如上例 , 执行调用swap2(a[0],a[1]) , swap2将x视作a[0]的别名、将y视作a[1]的别名 , 这样在函数体内交换x、y的值,实际上交换的是a[0]、a[1]的值 。
引用是C++语言引入的特性 , C语言中没有引用 。若要用C语言实现通过函数交换a[0]、a[1]的值,怎么办?
答案是:模拟传引用调用,即将函数声明为void swap2(int* xp, int* yp) 。
模拟传引用调用本质上仍是传值调用 , 只不过传入函数的是原始参数的地址 。
同样如上例,执行调用swap2(a+0,a+1),a+0是a[0]的地址 , a+1是a[1]的地址 。相应地 , swap将a[0]的地址值拷贝一份给xp,将a[1]的地址值拷贝一份给yp 。函数体内,swap2通过xp、yp即a[0]、a[1]的地址的新拷贝 , 操纵a[0]、a[1]的值 。
这种方式除了需要改造swap2的声明,还需改造swap2的函数体,即其实现 。
关于c语言中函数PPT和C语言中函数的形参和实参的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

推荐阅读