购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.7.4 指针变量作为函数的参数

函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型的数据。指针变量作为函数的参数的作用是将一个变量的地址传送到另一个函数中去,地址传递是双向的,即主调用函数不仅可以向被调用函数传递参数,而且还可以从被调用函数返回其结果。下面通过一个例子来进行说明。

例2-42 利用指针变量作为函数的参数实现两个元素的相互交换。

程序执行结果:

程序中自定义函数swap()的功能是交换两个变量a和b的值,swap()函数的两个形式参数p1和p2是指针变量。程序开始执行时,先输入a和b的值,然后将a和b的地址分别赋给指针变量pa和pb,使pa指向a,pb指向b。接着执行if语句,如果a<b则调用swap()函数。

注意函数调用时的实参pa和pb也是指针变量,调用开始时,实参变量将它的值传递给形参变量,采取的仍然是“值传递”方式,但这时传递的是指针的值(即地址)。参数传递完成后,形参pi的值为&a,pj的值为&b,即指针变量*pi和*pa都指向了变量a,*pj和*pb都指向了变量b。接着执行swap()函数体,使*pi和*pj的值互换,从而实现了a和b值的互换。函数返回时,虽然pi和pj被释放而不再存在,但main()函数中a和b的值已经被交换,因此最后能输出正确的结果。

由此可见以指针变量作为函数的参数,被调用函数在执行过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值的变化将被保留下来,从而实现“在被调用函数中改变变量的值,在主调用函数中使用这些被改变了的值”。

如果希望通过函数调用得到n个要改变的值,可以在主调用函数中设置n个变量,再用n个指针变量来指向它们,然后将指针变量作为实参将这n个变量的地址传递给被调用函数中的形参,通过形参指针变量来改变这n个变量的值,被改变了值将被保留下来,最后在主调用函数中就可以使用这些被改变了的值。 Oveg8veQzeIHPe/F4KBXdZJD+9Bak/yb+9P3vZztwNpOSIKS0e5ei0GHF1DPyWoa

点击中间区域
呼出菜单
上一章
目录
下一章
×