当函数的形参为指针,实参也为指针时,传递方式和普通变量一样,也是值传递的形式。
【例题】实参为指针
将【例题】程序改写,要求实参为指针的形式。程序代码如下:
#include <stdio.h>
void swap(int *p,int *q);
main()
{
int a,b,c;
int *p=&a,*q=&b,*t=&c;
printf("please input a,b & c:\n");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
swap(p.q); /*指针作为实参,形参是能接收地址的指针*/
if(a>c)
swap(p.t);
if(b>c)
swap(q,t);
printf ("%4d%4d%4d\n",a ,b ,c);
}
void swap(int *x,int *y)
{
int t;
t=*x;
*x=*y;
*y=t
}
程序的执行过程为:将p、q的值(a的地址、b的地址)分别传递为形参指针x、y,如图所示。
形参指针变量x指向变量a; y指向变量b,在函数调用开始时才分配存储空间,函数调用结束后立即被释放。
形参指针不能改变实参指针的值,但可以改变它们所指向的变量的值。
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>