C语言 指针变量作为形参,实参为变量的地址
此时将实参中变量的地址传递为形参指针,相当于指针指向了变量,所以利用指针对变量的值改变将带回实参。这种用法常用在需要一个函数返回多个值的情况,因为一个函数只能返回一个函数值,所以可以用指针将需要返回的其他值带回主调函数。
【例题】实现对三个变量按从小到大的顺序输出
算法分析:
设计一个函数swap(),实现将两个变量交换,该函数需要返回两个值,所以将函数的形参设计为指针,实参是两个变量的地址。
程序代码如下:
#include <stdio.h>
void swap(int *p,int *q):
main()
{
int a,b,c;
printf("please input a ,b & c:\n");
scanf("%d%d%d",&a,&b.&c);
if(a>b)
swap(&a,&b);
if(a>c)
swap(&a,&c);
if(b>c)
swap(&b,&c);
printf("%4d%4d%4d\n",a,b,c);
}
void swap(int *p,int *q)
{
int t;
t=*p;
*p=*q;
*q=t;
}
程序执行,按照屏幕提示信息输入:
6 2 4
输出结果为:
2 4 6
程序中,将实参a、b的地址分别赋给形参指针p、q,则a、b与p、q就形成了如图所示的指向关系:
指针作为形参和普通变量作为形参一样,当函数执行完毕,指针所占内存空间会被收回。
点击加载更多评论>>