扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
形参
我们拥有10余年网页设计和网站建设经验,从网站策划到网站制作,我们的网页设计师为您提供的解决方案。为企业提供成都网站制作、网站设计、微信开发、微信小程序开发、手机网站制作设计、html5、等业务。无论您有什么样的网站设计或者设计方案要求,我们都将富于创造性的提供专业设计服务并满足您的需求。
form
parameter
实参
real
parameter
出现在函数定义中的参数,就叫形参
出现在函数调用中的参数,就叫实参
函数定义:
int
max(
int
a
,
int
b
)
//这里的a,b就是形参
{
//在函数中,形参就可以当作是一个局部变量。
if
(
ab
)
return
a;
else
return
b;
}
函数调用
int
main()
{
int
a=3,b=5
;
printf(
"max=%d\n"
,
max(a,b)
);
//这里的a,b就是实参
c中的函数参数传递是传递变量的数值,因此,这里相当于调用
max(3,5)
而子函数中收到的就会是
3
5这两值,而与ab变量没有关系。
return
0;
}
值传递。
实参与形参数据传递有两种方式:值传递与地址传递。
地址传递的形式为
int
a=b;
也就是我们所说的引用,但引用只有C++中有,所以C语言都是值传递的。
有些人有误解:认为C语言的int
*p=a;不也是按地址传递吗?其实不是这样的。
深入理解值传递与地址传递就会发现:
值传递是:把实参的值传给一个变量(形参)。所以int
*p=a也是把a的地址值传给了指针变量p
地址传递是:直接把地址传进来,没有赋给任何变量,这样在函数体内对形参的操作也就是对实参地操作。有这种功能的也就是引用()了。
函数中的形参和调用时的实参都是数组名时,传递方式为(
地址传递
)
此时形参和实参共用同一段内存
都是变量时,传递方式为(
值传递
)
实参与形参互不影响
当你定义函数时,那时候的函数参数就叫做“形参”,因为它们没有任何实际内容。实际使用函数时,那时候参数就叫做“实际”了。
intadd(inta,intb){......}
此时,a与b就叫做形参。
intc=add(5,3)中,5与3就是实参。
第一个函数中有两个参数,可能不易理解。换个形式看一下。
func(a+b,c+d+e)中,你应该知道是两个参数。
(exp1,exp2)类似于a+b,也是个表达式,只不过它的运算符是逗号运算符。逗号运算符的结果是最后一个表达式。(exp1,exp2)运算结果就是exp2.
(exp3,exp4,exp5)等于exp5。
函数2是个递归调用函数,理解起来稍有些复杂。函数2中,前两个参数容易懂。因为fun是个函数,它能得到一个数,这个数算出来后,再作为一个参数。
第三个参数fun(n+k,d,(a,b))中,(a,b)仍然是逗号表达式,作为第三个参数。
如果你不懂递归调用,我可能就白啰嗦了。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流