春意影院小女生的胸

春意影院小女生的胸 超清

Relying on Heaven to Slaughter Dragons

  • 陈锦昀 张璐瑶 语桐 钟畅 高翎宸 
  • 李恒建 

    超清

  • 剧情 剧情片 

    中国大陆 

    汉语普通话 

  • 76

    2017 

c语言 请问这个PPT的意思是不是说这样用函数交换最终数组还是不会变的,为什么不变?

是的。这个PPT就是为了说明用void swap2(int x, int y)交换不了通过形参传入的元素。为什么交换不了?因为void swap2(int x, int y)的形式参数是传值模式。C/C++语言规定:以传值模式调用函数,在调用过程中,函数需先将形参做一个拷贝,然后基于新的拷贝进行计算。如上例,执行调用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的函数体,即其实现。



友情链接