1.函数的参数
a.实际参数(实参)
真实传递函数的参数叫实参。实际参数可以是常量变量,或甚至更复杂的表达式。无论实际参数是何种形式都要被求值都要被求值,然后该值被拷贝给被调函数相应的形式参数上。
b.形式参数(形参)
形式参数是指函数名后括号中的变量,因为形参只有在函数调用的过程中才实例化,所以叫形参,形式参数在函数调用完成之后就自动销毁了,因此形式参数只在函数中有效。
函数()里的形参可以不写,如下图,此函数没有参数,就不能传参,同时下面test()里没有加参数
在调用函数时需要标注参数的类型,如下自定义函数时要标注参数类型
void dibs(int x,int y,int z)
dibs(x,y,z)
总结
实际参数是出现在函数调用圆括号中的表达式。形式参数是函数定义的函数头中声明的变量。调用函数时,创建了声明为形式参数的变量并初始化为实际参数的求值结果。
2.函数调用
a.传值调用
函数的形参和实参分别占有不同内存块,对形象的修改不会影响实参。
如下图,为传值调用,有实参传递到形参,此时形参是实参的临时拷贝,形参的改变不影响实参,x,y只是把a,b的值给去过去了,并不会改变a,b。
看它最后结果并没变,交换前后数值不变。
b.传址调用
传址调用是把函数外部创局部变量的内存地址传递给函数参数的一种调用函数的方式。这种传参方式可以让函数和函数外边的变量建立起真正的联系,也是函数内部可以直接操作函数外部的变量。
上面的这串代码想要通过形参来改变实参,就需要进行传址调用,把a,b的地址传给x,y,使x,y指向a,b的地址,这样才能改变a,b的值。
此时通过传地址的方式就能改变他的值。这就成功交换了
总结
在函数调用过程中,你如果想通过这改变实参,则需要使用传址调用,如果只是引用它的值则可以使用传值调用。
二.函数的嵌套调用和链式访问
1.嵌套调用
一个函数里调用了另一个函数,即嵌套调用,如下图
此为函数嵌套
注意:函数可以嵌套调用,但是不能嵌套定义。
2.链式访问
把一个函数的返回值作为另一个函数的参数。如下图
此时打印的是多少呢,我们先看printf的库函数如下
我们看下他的返回值,成功后返回写入字符总数
故可以分析一波,43占2个字符,故返回的值为2,而2占一个字符,返回1,就是这么一个原理,返回值为4 3 2 1
总结
此次函数内容就讲到这里了,简明讲解了函数参数和调用的难点,理清了函数的作用,可能本次内容还有不足的地方,希望能在评论区指点出来,能看到这里还是感谢各位读者观看。