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

2024年12月03日 06:36
有3个网友回答
网友(1):

形参和实参其实没有实质区别,都是值传递。
形式上你可以发现实参是可以在其他函数里面修改的~
形参和实参最大的区别就是形参能够虽然也能够进行值得修改,但是只能够在函数内部,而实参是可以在全局范围内修改变量的值~这里需要提的是C语言有全局和局部的概念~形参就是仅仅的值传递,而当你的值传递到函数内部的时候,这个时候函数内修改的参数的地址已经不是主函数的变量地址了~也就是是说函数内对数值的任何修改都对主函数的变量没有任何影响
与之相对的实参,一般是通过指针的形式,它虽然也是传递值,但是这个值是地址,所以呢,你可以发现,地址传过去了,那么就可以像一根指针一样远程操纵者主函数内部的变量。
下面这个例子我都写好了,记住是VisualStudioC++的运行环境啊~别用TC了~
#include
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);
}

网友(2):

  1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
  2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
  3、实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。
  4、在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。

网友(3):

当定义函数时:

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

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

a(2,5)//这里的2和5就是实参。