说明: (1)调用函数时,函数名称必须与具有该功能的自 定义函数名称完全一致 (2)实参在类型上按顺序与形参,必须一一对应和 匹配。如果类型不匹配,C编译程序将按赋值兼容的规则 进行转换。如果实参和形参的类型不赋值兼容,通常并 不给出出错信息,且程序仍然继续执行,只是得不到正 确的结果 (3)如果实参表中包括多个参数,对实参的求值顺 序随系统而异。有的系统按自左向右顺序求实参的值, 有的系统则相反。 Turbo c和MSC是按自右向左的顺序进 行的。 Return
说明: (1)调用函数时,函数名称必须与具有该功能的自 定义函数名称完全一致。 (2)实参在类型上按顺序与形参,必须一一对应和 匹配。如果类型不匹配,C编译程序将按赋值兼容的规则 进行转换。如果实参和形参的类型不赋值兼容,通常并 不给出出错信息,且程序仍然继续执行,只是得不到正 确的结果。 (3)如果实参表中包括多个参数,对实参的求值顺 序随系统而异。有的系统按自左向右顺序求实参的值, 有的系统则相反。Turbo C和MS C是按自右向左的顺序进 行的 。 [Return]
715函数的形参与实参 函数的参数分为形参和实参两种,作用是实现数据 传送。 形参出现在函数定义中,只能在该函数体内使用。 发生函数调用时,调用函数把实参的值复制1份,传送给 被调用函数的形参,从而实现调用函数向被调用函数的 数据传送。 [案例73]实参对形参的数据传递。 /*实参对形参的数据传递。* /*案例代码文件名:AL73C*
7.1.5 函数的形参与实参 函数的参数分为形参和实参两种,作用是实现数据 传送。 形参出现在函数定义中,只能在该函数体内使用。 发生函数调用时,调用函数把实参的值复制1份,传送给 被调用函数的形参,从而实现调用函数向被调用函数的 数据传送。 [案例7.3] 实参对形参的数据传递。 /*实参对形参的数据传递。 */ /*案例代码文件名:AL7_3.C*/
void main( i void s(int n) /*说明函数* int n=100 /*定义实参n,并初始化* s(n) /*调用函数* printf("ns-%dn",n);,倖*输出调用后实参的值,便于进行比较*/ getcho void s(int n) printf("n x=%odn" n); /*输出改变前形参的值* for(i=n-1;p>=1;i-)n=n+i;/*改变形参的值* printf("n x=%od\n",n) *输出改变后形参的值* 「程序演示]
void main() { void s(int n); /*说明函数*/ int n=100; /*定义实参n,并初始化*/ s(n); /*调用函数*/ printf("n_s=%d\n",n); /*输出调用后实参的值,便于进行比较*/ getch(); } /* */ void s(int n) { int i; printf("n_x=%d\n",n); /*输出改变前形参的值*/ for(i=n-1; i>=1; i--) n=n+i; /*改变形参的值*/ printf("n_x=%d\n",n); /*输出改变后形参的值*/ } [程序演示]
说明: (1)实参可以是常量、变量、表达式、函数等。无论实参是何 种类型的量,在进行函数调用时,它们都必须具有确定的值,以便 把这些值传送给形参 因此,应预先用赋值、输入等办法,使实参获得确定的值。 2)形参变量只有在被调用时,才分配内存单元;调用结束时, 即刻释放所分配的内存单元 因此,形参只有在该函数内有效。调用结束,返回调用函数后, 则不能再使用该形参变量 (3)实参对形参的数据传送是单向的,即只能把实参的值传送 给形参,而不能把形参的值反向地传送给实参。 (4)实参和形参占用不同的内存单元,即使同名也互不影响。 ReturnI
说明: (1)实参可以是常量、变量、表达式、函数等。无论实参是何 种类型的量,在进行函数调用时,它们都必须具有确定的值,以便 把这些值传送给形参。 因此,应预先用赋值、输入等办法,使实参获得确定的值。 (2)形参变量只有在被调用时,才分配内存单元;调用结束时, 即刻释放所分配的内存单元。 因此,形参只有在该函数内有效。调用结束,返回调用函数后, 则不能再使用该形参变量。 (3)实参对形参的数据传送是单向的,即只能把实参的值传送 给形参,而不能把形参的值反向地传送给实参。 (4)实参和形参占用不同的内存单元,即使同名也互不影响。 [Return]
7.2函数的嵌套调用和递归调用 721函数的嵌套调用 函数的嵌套调用是指,在执行被调用函数时,被调用函数又调 用了其它函数。这与其它语言的子程序嵌套调用的情形是类似的, 其关系可表示如图7-1 main函数 f10函数 f20函数 调用f1(函数; 调用f20函数 后续语句 后续语句; ⑨ 结東 返回 返回
7.2 函数的嵌套调用和递归调用 7.2.1 函数的嵌套调用 函数的嵌套调用是指,在执行被调用函数时,被调用函数又调 用了其它函数。这与其它语言的子程序嵌套调用的情形是类似的, 其关系可表示如图7-1