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

 

三个数从大到小输出
#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 @ 2024-12-05 17:42  崩溃的小孙  阅读(21)  评论(0)    收藏  举报