函数的形参与实参
在学习函数的时候,形参与实参总是搞不清楚,请哪位高手详细的说明一下,最好结合例子。 问题点数:0、回复次数:13Top
1 楼zoezinsser(wealth)回复于 2003-08-03 11:05:25 得分 0
形参和实参其实很好搞清楚:实参是形参的初始化。
当然,在c中,形参传值时,是单向的,只能传过去而不能传回来。
但,如果你想传回来时,就用传址的方法,即将指针作为形参!
在c++中,还可以用引用作为形参,在本质上是传址,但在内容上是传值!Top
2 楼zoezinsser(wealth)回复于 2003-08-03 11:06:47 得分 0
另外,形参和实参不是同一个内存空间,除了数组作为参数!Top
3 楼zoezinsser(wealth)回复于 2003-08-03 11:07:37 得分 0
由于时间的关系,我就不给例子了,留给其他的兄弟吧!Top
4 楼lemon520(喷血)回复于 2003-08-03 11:16:12 得分 0
函数调用是用实参替换行参,行参只是摆在那里等实参来替换的!实际参与运算的是实参!Top
5 楼kxen(雄鹰)回复于 2003-08-03 11:30:41 得分 0
我觉得从最根本上说没什么区别,形参可以看作实参的拷贝,拷贝完应该就没什么关系了Top
6 楼danielhf(我)回复于 2003-08-03 12:57:03 得分 0
你只要记住一句话: 在函数中运算的那个参数为实参,它通常是形参的一个拷贝,除非你按引用传递!Top
7 楼bluei(蓝之我)回复于 2003-08-03 13:07:49 得分 0
奇怪,zoezinsser可以连续恢复三次。Top
8 楼loveghb(温柔的毒药)回复于 2003-08-03 13:09:03 得分 0
实参就是函数外面那个,形参就是拷贝实参,然后压栈,也就是栈中的那个。(大部分情况都是如此)Top
9 楼fayejt(痞子)回复于 2003-08-04 22:31:07 得分 0
举个例子:
#include<iostream>
using namespace std;
int func(int a,int b);
int main()
{
cout<<"this is a simple e.g.\n";
int x,y;
cin>>x;
cin>>y;
int z=func(x,y);
cout<<"x+y= "<<z;
system("pause");
return 0;
}
int func(int a,int b)
{
return a+b;
}
这里的a,b就是形式参数,从字面就可以理解,它只是个形式,在这里的意思就是输入到func括号里面的两个数相加,
而x,y就是实参,它是主角,你所输入的是x,y 的值,而不是a,b的值,x,y才能被编译器真正识别,然后返回Top
10 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2003-08-04 22:35:23 得分 0
一般来讲,你不需要搞清楚什么是形参,什么是实参,因为这只有在上课时才用到。
我有超过5年的编程经验,算半个老手了,可是到现在也不明白形参和实参的具体概念,因为我觉得我会用就够了。Top
11 楼lixdo(QQ(203))回复于 2003-08-04 23:20:19 得分 0
-----------------------------------------------------------------------------
void hello(int x);
int main()
{ ——
int iLoveC=14; ------>创建iLoveC变量, | 14 | ·
hello(iLoveC); 并将14赋给她 —— ·
··· iLoveC ·
} 2个变量
2个名称
void hello(int x) ·
{ —— ·
··· ------->创建x变量,将iLoveC | 14 | ·
} 的值14赋给她 ——
x
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
void hello(int &x);
int main()
{ ——
int iLoveC=14; ------>创建iLoveC变量, | 14 | ---->1个变量
hello(iLoveC); 并将14赋给她 —— 2个名称
··· iLoveC
}
|
void hello(int &x) |
{ |
··· ------->使x成为 -----------
} iLoveC的别名
-----------------------------------------------------------------------------
上面的x都是形参,iLoveC就是实参了吧,不知道c语言的是不是一样的呢??:)
实参就没什么好说的了,形参可以从上面看出对我们能不能写出好程序有很大关系哦。//
我不是高手,可我和电脑之间正放着一本厚厚的c++,我这么麻烦的写这些
并不只因为你,我正在学c++,这也有可以加固自己的理解吧。
好了,大家都好好学习:)
Top
12 楼mushengyuan(凌云)回复于 2003-08-04 23:46:40 得分 0
main( )
{ int a,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf("max is %d",c);
}
max(int x,int y) /*定义有参函数max*/
{ int z;
z=x>y?x:y;
return(z);
}
---------------------------------------------------------------------------------
其中x,y为形参,a,b为实参;
注意:C语言规定,实参变量对形参变量的数据传递是"值传递",即单向传递,只由实参传给形参
,而不能由形参传回来给实参.
Top
13 楼Inkick(星点)回复于 2003-08-05 02:36:42 得分 0
简单的说,形参是指函数和其他block的接口~
函数通过形参和外界进行数据交换~是函数获得数据的途径
而实参是外界传递给函数数据的一个方式~
楼上的几位的例子很清楚,我就不废话了Top




