函数的形参与实参
在学习函数的时候,形参与实参总是搞不清楚,请哪位高手详细的说明一下,最好结合实例 问题点数:0、回复次数:15Top
1 楼steedhorse(晨星)回复于 2003-08-03 11:21:08 得分 0
形参是函数被声明时所用的参数。
实参时函数被调用时真正传进去的参数。Top
2 楼GZCompiler(编译器)回复于 2003-08-03 11:27:15 得分 0
形参 是函数声明时的参数,只说明参数名和类型,不是实际的参数,不能真正使用。
实参 运行时传给函数的参数,是实际的变量,形参在这时真正被分配空间,并复制了实参的值。Top
3 楼MaiCle(原来小日本连畜生都不如)回复于 2003-08-03 12:27:12 得分 0
int Fun( int a, int b);
--- 这里的 a, b 都是形参。
int a = 0;
int b = 1;
Fun(a, b);
--- 这里的 a, b 则是实参。
明白了吗?Top
4 楼hillyee(山之笛)回复于 2003-08-03 12:34:43 得分 0
一个函数的实参在内存中有自己固定的内存,知道函数执行结束才释放内存。
而形参没有固定的内存,只在调用函数的时候有一个虚拟内存,等调用完毕就不再有内存。Top
5 楼snowman_pc(cpp)回复于 2003-08-03 12:35:27 得分 0
实参是调用函数时的参数
形参是定义函数时的参数Top
6 楼Casear(凯文)回复于 2003-08-03 14:21:06 得分 0
递归是怎么调用的啊??Top
7 楼Casear(凯文)回复于 2003-08-03 14:22:52 得分 0
小弟刚学C,才疏学浅!
Top
8 楼bm1408(向va_list学习~不用VC好多年~)回复于 2003-08-03 15:10:18 得分 0
一个函数的实参在内存中有自己固定的内存,知道函数执行结束才释放内存。
而形参没有固定的内存,只在调用函数的时候有一个虚拟内存,等调用完毕就不再有内存。
形参 是函数声明时的参数,只说明类型,不是实际的参数,不能真正使用。
实参 运行时传给函数的参数,是实际的变量,形参在这时真正被分配空间,并复制了实参的值。
example:
int aa(int ,int )Top
9 楼bahanzo1(绯雨流烟)回复于 2003-08-03 15:15:10 得分 0
形参,顾名思义就是一个形式上的,定义的时候声明的
实参,函数调用的时候传进去的参数
Top
10 楼wanghuan1983(水木年华)回复于 2003-08-03 16:58:18 得分 0
实参是调用函数时的参数
形参是定义函数时的参数
他们的关系是在函数调用的时候,实参把值传给形参。
请注意在C语言中,他们的传递方式在值传递。这一点很重要。
而且在学习函数的过程中,我可以给你一点建议,如果有不妥的地方还请大家指出来;
设计一个函数最重要的两点就是:
1.函数的接口
2.函数的实现
函数的接口是很重要的问题,以后你还会学到实现他们的不同方式。比如说实参用数组形参用指针等多种方式
如果这两个问题解决好了的话,就没有什么问题了。
Top
11 楼TREEDIAO()回复于 2003-08-03 17:23:56 得分 0
修改一下
int Fun( int a, int b)
{
--- 这里的 a, b 都是形参。
int a = 0;
int b = 1;
---这里的 a, b 还是形参。
cout<<a<<b<<endl;
}
void main()
{
int x=3;
int y=5;
Fun(x,y);---这里的 x, y 则是实参。
cout<<x<<y<<endl;
}
你会发现输出的是
0 1
3 5
x和y的值其实没有改变,还是3和5,他们将自己的值复制给形参,形参在函数中把他们改变,但在主程序中没变。Top
12 楼TREEDIAO()回复于 2003-08-03 17:26:39 得分 0
补充一下:以上在c++中是这样,在c中则不同。Top
13 楼jumpcolor(跳动de色彩)回复于 2003-08-03 18:05:03 得分 0
上面解释的已经很全面了!
我也有个取巧的辨识方法,在main中的是实参,在函数中等待接收实参的是型参!
象
touper(char *string)//string -->> 型参
{... ...}
main
{
char str[]="abc";
touper(str);str -->> 实参
}
高手们,我这么说行么?Top
14 楼steedhorse(晨星)回复于 2003-08-03 22:16:31 得分 0
楼上的好像不太行吧?函数调用不一定值发生在main中呀,任何函数都可能调用别的函数的。
如;
void PrintInt(int i);//i是形参。
{
printf("%d\n" , i);//i是实参。
}Top
15 楼jumpcolor(跳动de色彩)回复于 2003-08-04 21:08:38 得分 0
hehe,受教!Top



