分两种,一种是按值传递,一种是按地址传递,
独山子网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。成都创新互联于2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
按值传递就是在子函数中开辟出一个临时内存空间,将传递的数值保存在这个空间中,当子函数结束后,这个内存空间就会释放了!
按地址传递则是把主函数开辟的某个内存空间首地址传递给子函数,子函数可以直接读写主函数上这段内存空间,当子函数结束后,这部分空间不会被释放,主函数将继续使用这段空间!
函数只有两种传递方式:
1、值传递,又称单向传递,只能把实参数值传给形参 ,形参最后的结果不影响实参(形参改变大小 ,实参大小不变)。
2、址传递,通过指针,把实参的地址给形参,形参的大小可以影响实参。
扩展资料:
实参变量和形参变量之间的调用过程
1、函数的形参列于函数声明中,在函数定义的函数体内使用,在未出现函数调用时,形参不占内存中的存储单元。
2、将实参的值传递给形参,当函数被调用时,实参列在函数名后面的括号里,执行函数调用时,实参被传递给形参。
3、在执行函数期间,由于形参已经有值,可以利用其进行相关运算。
4、通过return语句将函数值带回到主调函数。
5、调用结束,形参单元被释放。实参单元仍保留并维持原值(值传递)。
参考资料来源:百度百科-实际参数
在C语言中,实参将值传给函数中的形参,实现了自上而下的值传递,就可以调用函数了。
举个浅显一点的例子吧:
#include
void
main()
{
int
swap(int
x,int
y);
int
a,b;
......
swap(a,b);
}
int
swap(int
x,int
y)
{
......
}
在主函数中,将实参a,b的值传递给被调用函数中的形参x,y,即将a,b分别代入x,y中计算,即达到了调用的目的。
if(k==0||i=x[k-1])
{
x[k]=i;//写入数组
split(n-i,k+1);
}这里x[k]=6;所以n-i=0,传入split中的形参n,这个时候n就变成0了
C语言传递的是值而不是地址,这一点从VB转过来的程序员一定要注意。否则不经意间就会犯错误。另外下层函数修改上层函数变量不是一种好习惯,容易引发错误。C语言中函数可以返回一个函数值,如果你需要返回多个函数值可以用下面的形式
fun(int *a, int *b)
{ *a=1;*b=2;}
main()
{ int a, b;
fun(a,b) a,b的值被改变
}
如果按VB的习惯,
fun(int a, int b)
{ a=1;b=2;}
main()
{ int a, b;
fun(a,b);a、b的值没有改变
}
是错误的,main中的a,b和fun中的a,b完全是两码事,结果就是调运fun没有任何效果。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款