C语言中,什么是形参和实参?最好能举个例子!

 我来答
Aliska
2008-02-28 · TA获得超过813个赞
知道小有建树答主
回答量:579
采纳率:0%
帮助的人:438万
展开全部
形参和实参其实没有实质区别,都是值传递。
形式上你可以发现实参是可以在其他函数里面修改的~
形参和实参最大的区别就是形参能够虽然也能够进行值得修改,但是只能够在函数内部,而实参是可以在全局范围内修改变量的值~这里需要提的是C语言有全局和局部的概念~形参就是仅仅的值传递,而当你的值传递到函数内部的时候,这个时候函数内修改的参数的地址已经不是主函数的变量地址了~也就是是说函数内对数值的任何修改都对主函数的变量没有任何影响
与之相对的实参,一般是通过指针的形式,它虽然也是传递值,但是这个值是地址,所以呢,你可以发现,地址传过去了,那么就可以像一根指针一样远程操纵者主函数内部的变量。
下面这个例子我都写好了,记住是VisualStudioC++的运行环境啊~别用TC了~
#include<stdio.h>
int main()
{
void max1(int *a,int *b);//实参例子
void max2(int c,int d);//形参例子
int *x,*y;
int e,f;char k;
printf("请输入两个数字,格式为:”数字,数字“(不包括引号)");
scanf("%d,%d",&e,&f);
printf("请输入你要演示的例子:\n 1.实参例子 \n 2.形参例子");
getchar(k);
switch(k)
{
case'1':{
x=&e;y=&f;max1(x,y);printf("这是在主函数输出的数据:e=%d,f=%d",&e,&f);
}
case'2':{max2(e,f);
printf("这是在主函数输出的数据:e=%d,f=%d",&e,&f);}
default:printf("error\n");
}
return 1;
}
void max1(int *a,int *b);//实参例子
{
int c;
if(*a>*b)
{
c=*a;*a=*b;*b=c;
}
printf("这是在max1函数输出的数据:e=%d,f=%d",a,b);
}
void max2(int c,int d);//形参例子
{
int g;
if(c>d)
{
g=c;c=d;d=g;
}
printf("这是在max2函数输出的数据:e=%d,f=%d",a,b);
}
千锋教育
2015-12-24 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
  1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
  2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
  3、实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。
  4、在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linping7782
2008-02-28 · TA获得超过2556个赞
知道小有建树答主
回答量:1709
采纳率:0%
帮助的人:1072万
展开全部
当定义函数时:

void a(int a,int b)//这里的a和b就是形参

当调用a()时,我们需要这样写:

a(2,5)//这里的2和5就是实参。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式