首页 理论教育 C语言教程:利用指针变量作为函数参数

C语言教程:利用指针变量作为函数参数

时间:2023-10-23 理论教育 版权反馈
【摘要】:在调用函数时,实参变量和形参变量之间的数据传递是单向的,指针变量作为函数参数也要遵守这一规则,所以函数调用不能改变实参指针变量的值,但是可以改变实参指针变量所指向的内存单元的内容,即目标变量的值。这正是指针变量作为函数参数的优势。理论上能实现两个变量值的交换,但是该函数中将指针变量t所指向的存储单元作为中间变量,且未对指针变量t进行初始化,所以t的值为随机值。

C语言教程:利用指针变量作为函数参数

函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型的数据。在调用函数时,实参变量和形参变量之间的数据传递是单向的,指针变量作为函数参数也要遵守这一规则,所以函数调用不能改变实参指针变量的值,但是可以改变实参指针变量所指向的内存单元的内容,即目标变量的值。这正是指针变量作为函数参数的优势。函数调用本身仅能得到一个返回值(即函数值),而运用指针变量作函数参数则可以通过对形参指针所指向的内存单元(即实参指针变量所指向的目标变量)的操作,或者说间接访问的形式来改变主调函数中数据的值,从而使主调函数得到多个运算结果。这种参数传递方式称为地址传递,属于双向传递。

【例8-2】编写函数,实现将两个变量的值进行交换。

函数1:

【说明】该函数采用值传递方式,是单向传递。实参变量和形参变量分别占用不同的存储单元,改变形参变量的值不会影响实参变量的值,故该函数不能实现两个变量值的交换。

函数2:

【说明】该函数采用地址传递方式,是双向传递。通过改变形参指针变量所指向的存储单元(即主调函数中的变量)的值,从而影响主调函数中变量的值,故该函数能实现两个变量值的交换。(www.xing528.com)

函数3:

【说明】该函数同样采用了地址传递方式,是双向传递。理论上能实现两个变量值的交换,但是该函数中将指针变量t所指向的存储单元作为中间变量,且未对指针变量t进行初始化,所以t的值为随机值。若t指向系统区,则改变了t所指向的存储单元的值,有可能造成系统混乱,因而,此函数的设计是不可取的。

函数4:

【说明】该函数也采用了地址传递方式。在该函数中交换的是两个指针形参变量的值而不是两个指针形参变量所指向的存储单元的值,因此不能影响主调函数中变量的值,故该函数不能实现两个变量值的交换。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈