首页 百科知识 指针变量作为函数的参数

指针变量作为函数的参数

时间:2022-10-20 百科知识 版权反馈
【摘要】:程序执行结果没有完成预期目的。因为当a

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

指针变量也可作为函数的参数,此时函数的实参与形参之间是地址传递。

【例9-2】输入两个整数a、b,按先大后小的顺序输出a和b。

程序1:不用子函数,在主函数中交换指针变量的的值。

img396

程序执行结果:

img397

当a<b时,指针变量p1和p2交换后,p1指向b(较大的值),p2指向a(较小的值)。交换前后的情况如图9-2所示。

img398

图9-2

程序2:在子函数中交换指针变量所指的值。

img399

img400

程序执行结果:

img401

当a<b时,函数swap把指针变量pa和pb所指的值10和50做了交换,pa仍指向a=50,pb仍指向b=10。交换前后的情况如图9-3所示。

img402

图9-3

程序3:在子函数中交换指针变量所指的值。

img403

程序执行结果:

img404

程序执行结果没有完成预期目的。因为当a<b时,函数swap把指针变量pa和pb的值做了交换,在swap函数返回前,形参p1指向b=50,p2指向a=10,但在swap函数返回时,p1和p2的值并不能传递给实参pa和pb。因为C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。指针变量作函数参数也要遵循这一规则。调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。交换前后的情况如图9-4所示。

img405

图9-4

【例9-3】输入a、b、c3个整数,按大小顺序输出。

img406

img407

程序执行结果:

img408

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

我要反馈