关于指针变量作函数参数的补充
三个数从大到小输出
#include<stdio.h>
void exchange(int *q1,int *q2,int *q3);
void swap(int *pt1,int *pt2);
int a,b,c;
int *p1, *p2,*p3;
int main()
{
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
exchange(p1,p2,p3);
printf("%d,%d,%d",a,b,c);
return 0;
}
void exchange(int *q1,int *q2,int *q3)
{
if(*q1<*q2)
swap(q1,q2);
if(*q1<*q3)
swap(q1,q3);
if(q2<q3)
swap(q2,q3);
}
void swap(int *pt1,int pt2)
{
int t;
t=pt1;
pt1=pt2;
*pt2=t;
}
想通过函数调用得到3个想改变的值。
在主调函数中设置3个变量a,b,c用三个变量指针p1,p2,p3,指向它们。
- 设计一个函数exchange,有3个指针形参。在这个函数中改变这三个形参q1,q2,q3的值,为了简化代码再设计一个函数swap,使每次符合条件的值互换
- 在主调函数中调用exchange函数,调用时将p系列作为实参,将它们的值(地址)传给exchange函数的形参q系列。
- 在exchange函数和swap函数的作用下,通过形参指针变量,改变它们所指向的3个变量(实际上是在swap函数中直接改变所指向变量的值)。
完成。
指针变量作为函数参数物理模型: 定义a为整形,a的地址为2000;定义一个指针变量p,存放a的地址;当*p时就通过p所存放的地址提取出a的值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)