关于指针变量作函数参数的补充

 

三个数从大到小输出
#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个想改变的值。

  1. 在主调函数中设置3个变量a,b,c用三个变量指针p1,p2,p3,指向它们。
  2. 设计一个函数exchange,有3个指针形参。在这个函数中改变这三个形参q1,q2,q3的值,为了简化代码再设计一个函数swap,使每次符合条件的值互换
  3. 在主调函数中调用exchange函数,调用时将p系列作为实参,将它们的值(地址)传给exchange函数的形参q系列。
  4. 在exchange函数和swap函数的作用下,通过形参指针变量,改变它们所指向的3个变量(实际上是在swap函数中直接改变所指向变量的值)。

完成。

 

指针变量作为函数参数物理模型:![image](https://img2024.cnblogs.com/blog/3570980/202412/3570980-20241210161439214-1152009587.jpg) 定义a为整形,a的地址为2000;定义一个指针变量p,存放a的地址;当*p时就通过p所存放的地址提取出a的值。
posted @   崩溃的小孙  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示