形参与实参,请大侠们给我解释解释

我想过c语言2级,但是我做题的时候都会遇到函数调用,从书本上就是实参单向传给形参,形参改变不了实参的值.但是
我做了很多题,有时候答案是原来那个值,也就是形参没有改变到实参但是有时候答案又是形参传回来的那个值,这不是和形参不能改变实参矛盾吗?到底怎么个辨别法啊,我都快疯了....头痛!!!!求高手解答,,最好是c语言教师,我弄懂了加分,诚信
我所迷惑的就是,有时候答案是返回值,有时候又是原来的实际参数值,我是真的一个头,两个大了,,

参数传递称实虚结合,即实参向形参传递信息,使形参具有确切的含义(即具有对应的存储空间和初值)。
在C++中,参数传递有三种形式:
1、按值传递(传值调用)
把实参表达式的值传送给对应的形参变量。形参中存放的是实参的副本,在函数体中对形参的操作与相应的实参无关。在内存中,实参单元与形参单元是不同的单元。

2、指针参数传递 :把实参的地址传送给对应的形参变量。在函数体中使用间接访问运算符(*)形成实参的别名,并可用其修改调用者的数据。

3、引用参数(按引用调用) 形参是实参的引用(别名),形参和实参共用一个存储单元。所以,对形参的操作实际上就是直接对实参的操作。

为了获得程序的清晰性和高性能,通常:
不可修改的小参数按值调用传递
不可修改的大参数用常量引用参数传递
可以修改的参数用指针参数传递
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-12
形参就是 函数 用来接收 实参(你设置的变量) 的值的东西,
是新建立的 缓存变量,名字就是形参名,不管是什么 一般类型和指针类型都是 把 原(实参的)值copy给 形参(新建立的变量,地址不同,而且存放的空间也不同())
搞清楚这个 在来看一般所说的 值传递 和 地址传递:
【1】值传递,就是指 变量是一般类型 非指针,把变量的值拷贝过来,
【2】而地址传递,是(形参)参数类型是指针, 从(实参)哪里拷贝的值 是一个地址,所以通过指针 访问地址 就改变了原变量。

【3】最后一种就是 引用 ,引用传递是 不建立新的缓存变量,而是直接将 形参名 作为 原实参 的别名,直接访问 或者 修改 实参内容。

其他关于函数传参 无非是 指针类型不同, 指针与数组的转换
函数指针,2维指针,指针数组等等。
第2个回答  2010-09-12
给你举个例子:
#include<stdio.h>
main()
{
int i=2,j=4;
int k;
k=fun(i,j); //这里i,j是实参,k的值是函数的返回值
printf("%d,%d",i,j);
printf("%d",k);
}

int fun(int a,int b) //这里a,b是形参
int m;
a=a+1; //a的值(形参)加1了,但实参i的值不变
b=b+1; //b的值(形参)加1了,但实参j的值不变
m=a+b;
return(m);
}

上面的例子中形参没有改变实参,主要原因是实参传递给形参的是值,记住是值,不是地址。如果实参传递给形参的是地址(也就是指针),那么就可以在函数中改变函数外的那个实参的值
函数类似:
int fun(int *p,int *q)
{
*p=*p+1; //这时就改变了函数外面的那个实参的值
}本回答被提问者采纳
第3个回答  2010-09-12
去弄清什么是值,什么是址。

形参和实参是什么?
形参不是实际存在变量,又称虚拟变量。2、目的不同:实参可以是常量、变量或表达式,无论实参是何种类型的量,在进行函数调用时,都必须具有确定的值,以便把这些值传送给形参。需要注意当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的...

形参与实参,请大侠们给我解释解释
参数传递称实虚结合,即实参向形参传递信息,使形参具有确切的含义(即具有对应的存储空间和初值)。在C++中,参数传递有三种形式:1、按值传递(传值调用)把实参表达式的值传送给对应的形参变量。形参中存放的是实参的副本,在函数体中对形参的操作与相应的实参无关。在内存中,实参单元与形参单元是不...

形参与实参是什么意思?
形参:全称为"形式参数"是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传如的参数.实参:全称为"实际参数"是在调用时传递个该函数的参数.形参和实参的类型必须要一致,或者要符合隐含转换规则,当形参和实参不是指针类型时,在该函数运行时,形参和实 参是不同的变量,他们在内存...

【C语言急问】形参是什么意思?实参是什么意思?请用最简明、通俗、易懂...
形参:是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。 实参:是在调用时传递给函数的参数 形参与实参区别:传值调用中,只使用了实参的值。传值调用机制里,形参是一个局部变量,其初始值为相应实参的值。在引用调用机制里,以实参变量取代形参,因此任何发生在形参上...

形参与实参的传递是怎么回事啊?请大虾们帮帮忙,用下面的二道题详细...
NO.1中swap函数的参数叫做形参,main函数传递给它的p和q为实参,swap函数要求的是两个整数指针,即整数的地址,当main函数将i,j的地址传递给swap函数后,swap函数将对这两个整数进行操作,将两者互换。NO.2中swap函数要求的是两个整数,main函数将两个整数传给他 ,形参的值等于了实参的值,但swap...

请问形参和实参的关系是什么?
在过程调用传递参数时,形参与实参是按位置结合的,形参表和实参表中对应的变量名可以不必相同,但它们的数据类型、参数个数及位置必须一一对应

形参和实参的问题
形参引用是的指针,相当于直接引用指针所指地址中的数据,当在函数中 通过指针的引用而进行数据操作时就相当于对所指地址中的数据进行操作 即直接对实参进行操作 而一般的形参相当于在子函数中重新定义的变量,只不过变量的值与通过 实参传递过来的值一样,所以并不是对同一个变量进行操作,所作的操作...

c语言中函数形参与实参的区别与联系
实参x把值赋给形参x后,就没有实参的什么事了,在函数中形参x值的变化也不会影响实参x的值。说起它们的相同之处,就是它们的变量类型是一样的;说起它们的联系,就是有一次实参对形参的赋值;说起它们的区别,则是两个不同的变量。啰嗦很多,不知是否说清,若有不明之处,请留言。

形参与实参的区别,怎么区分呢
1、实参:在调用有参函数时,函数名后面括号中的参数为“实际参数”。2、形参:不是实际存在变量,又称虚拟变量。二、目的不同 1、实参:可以是常量、变量或表达式, 无论实参是何种类型的量,在进行函数调用时,都必须具有确定的值, 以便把这些值传送给形参。2、形参:定义函数名和函数体的时候使用...

关于形参与实参
第二个也是实现的地址传递,由于你函数void sort(int array1[])中的形参设定的是一个整形数组,当在主函数中调用该函数时,传递的实参只能是声明实际数组的地址,传递实际数组的地址可以达到值传递的效果。

相似回答