欢迎访问文稿网!

指针变量作为函数的参数

范文之家 分享 时间: 加入收藏 我要投稿 点赞

指针变量作为函数的参数

    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

221381
领取福利

微信扫码领取福利

微信扫码分享