1.形参和实参的区别:(1)形参出现在 函数定义 中,在整个函数体内都可以使用, 离开该函数则不能使用;(2)实参出现在 主调函数中,进入被调函数后,实参变量也不能使用 。
形参和实参的功能:作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送(即(主函数)实参--->(子函数)形参) 。
注意:形参和实参虽然可以同名,但它们之间是相互独立的,互不影响,因为实参在函数外部仍有效,而形参只在函数内部有效。
2.实参赋值给形参,传递数组给函数(本质上就是传递指针):
(实参--->形参):实参(数组或指针)传递的是数组首元素的地址或指向首元素地址的指针,用不带索引的数组名表示【如,本来指针*p,此时实参用首地址p表示,即 f(p)】),子函数在需要用到后面元素时再按照这个地址和数组下标去查找和计算。反正子函数的形参,形式上是数值,如a[],*p;
3.子函数中的形参是数组,可以通过改变下标来改变数组中的值,如a[k]=a[k+1];
4.子函数中的形参是指针*p时:
(1)指针数组,可通过改变指针的地址来改变数值,如p++
(2)也可以通过直接赋值来实现值的改变,
int t;
t=*p1;
*p1=*p2;
*p2=t;
5.数组和指针传递实参,传递的是地址;形参接收时,形式上是数值形式,但在子函数中应用时,可以应用其下标,地址,或数值,来查找和计算。数组需要返回值给主函数;指针则不需要返回值
6.值传递实参的特点是单向传递,即主调函数调用时给形参分配存储单元,把实参的值传递给形参,在调用结束后,形参的存储单元被释放,而形参值的任何变化都不会影响到实参的值,实参的存储单元仍保留并维持数值不变。此时,在不使用全局变量的前提下,需要将返回值返回给主函数,才行。