这一讲的宗旨是:
1,深化读者对用指针变量做函数形参优势的认识
2,使读者加强理解 指针在函数中的应用
前两讲的编程题目相同,方法不同:
第三讲调换的是p1和p2的值,即调换p1和p2的指向,使p1指向b而p2指向a,a和b的值没有调换
第四讲调换的是*p1和*p2,即调换a和b的值
![8b3b33394ab70a883ae4ae06e6ae595b.png](https://img-blog.csdnimg.cn/img_convert/8b3b33394ab70a883ae4ae06e6ae595b.png)
一,用指针变量做函数形参优势
优势:在被调用函数中使*p1和*p2调换,就会使a和b调换,无需给主调函数返回值
小知识:被调用函数只能给主调函数返回一个值,所以想通过返回值改变a和b的值会比较麻烦
如何通过调用函数改变主调函数中变量的值
(1)在主调函数中,定义n个变量,定义n个指针变量并指向n个变量,将n个指针变量作实参
(2) 在被调用函数中,写入n个基类型和主调函数中指针变量相同的指针变量,
(3)改变形参指针变量指向的变量的值,就可以改变主调函数中变量的值
![14571060530c2d0390fd2761bf745e27.png](https://img-blog.csdnimg.cn/img_convert/14571060530c2d0390fd2761bf745e27.png)
二, 指针在函数中的应用
编程题目:
输入a,b,c三个整数,按照从大到小的顺序输出
程序编写如图
![c6a732a68590fb9f0e4284f626245db0.png](https://img-blog.csdnimg.cn/img_convert/c6a732a68590fb9f0e4284f626245db0.png)
分析程序:
1,程序思路
可使程序先后输出a,b,c,但是因为a,b,c的大小不确定,所以应该定义函数,使得最大值赋给a,其次值赋给b,最小值赋给c。
![9b920db382f8c5c85e55cf5a46251421.png](https://img-blog.csdnimg.cn/img_convert/9b920db382f8c5c85e55cf5a46251421.png)
2,定义主函数
(1)定义三个整型变量a,b,c和三个指针变量p1,p2,p3;
(2)编写输入语句,使程序获得整型变量a,b,c的具体数值;
(3)分别将a,b,c的地址赋值给指针变量p1,p2,p3,那么*p1,*p2,*p3就分别等价于a,b,c;
(4)先声明自定义exchange函数,再调用exchange函数,使变量a的值最大,b的值次之,c的值最小;
(5)编写输出语句,依次输出a,b,c,即可达到按照从大到小的顺序输出三个整数的目的
![77ceaa39f69da913cb1b15383c8f3dc5.png](https://img-blog.csdnimg.cn/img_convert/77ceaa39f69da913cb1b15383c8f3dc5.png)
3,定义exchange函数
(1)此函数不需要返回值,所以是void类型;函数的形参是三个指针变量,分别为q1,q2,q3;
(2)采取俩俩比较的方式,所以声明swap函数,swap函数的作用是调换两个整型变量的值;
(3)先比较*p1和*p2,即比较a和b,如果a的值小,则将a和b的值调换,否则不调换,使得a的值是这两个数中较大的数;
(4)再比较*p1和*p3,即比较a和c,如果a的值小,则将a和b的值调换,否则不调换,使得a的值是这两个数中较大的数;
(5)最后比较*p2和*p3,即比较b和c,如果b的值小,则将b和c的值调换,否则不调换,使得c的值是这三个数中最小的数;
![6497c0a3b1d5681e75400d62e54ec55f.png](https://img-blog.csdnimg.cn/img_convert/6497c0a3b1d5681e75400d62e54ec55f.png)
4,定义swap函数
(1)函数类型为void,形参为两个指针变量pt1和pt2
(2)定义中间变量temp,调换*pt1和*pt2的值
程序分析到此结束,不懂之处随时私信或评论留言