【项目1 - C/C++语言中函数参数传递的三种方式】
C语言提供了两种函数参数传递的方式:传值和传地址。在C++中,又拓展了引用方式。通过本项目,确认自己已经掌握了这三种方式的原理,为后续学习做好准备。
主函数代码如下:
根据以下三种myswap函数对横线处填充内容进行修改
方式 1:
在myswap函数中 整型变量x和y为形式参数,其值由主函数中调用次函数的实参传递,调用函数时,为x开辟内存空间,为y开辟内存空间,但是实参a,b与形参x,y都为独立的内存空间,调用myswap函数后,调换的是x与y的值,x与y的内存空间在myswap函数结束时释放空间,并不能使a,b的值调换,所以这种方式不能在此题的条件下不能完成主函数中a与b的调换,输出结果仍未原结果。
方式 2:
这种方式下,myswap函数的形参使两个整型指针变量,在此函数结束后虽然指针变量会释放,但是可以改变指针变量所指向的变量,所以,主函数可修改为 通过主函数传递a的地址和b的地址给myswap函数的p1,p2,通过改变指针所指向的变量(a,b)来调换a,b的值。
运行结果:
方式 3:
在这个myswap函数中,形式参数改为了int &x,int &y,即为与主函数传递的实参共用一块内存空间,还可以说x,y是变量a,b的别名,所以主函数中只需要将变量a,b传递给myswap函数即可。
修改主函数为:
运行结果: