注意: ①形参变量在被调用前不占用存储单元;在被调用结束 后,形参所占存储单元亦被释放。 ②实参可以是常量、变量或表达式。 ③必须指定形参类型,且必须与实参的类型一致。 ④实参对形参的数据传递是“值传递”。即单向传递, 能逆传。 ⑤可以在形参表中直接说明形参类型。如: int max(int x, int y); float fun(int a[10], int n);
注意: 形参变量在被调用前不占用存储单元;在被调用结束 后,形参所占存储单元亦被释放。 实参可以是常量、变量或表达式。 必须指定形参类型,且必须与实参的类型一致。 实参对形参的数据传递是“值传递”。即单向传递,不 能逆传。 可以在形参表中直接说明形参类型。如: int max(int x, int y); float fun(int a[10], int n);
2.函数的返回值 ①函数的返回值是通过 return语句获得的。当不需返 回函数值时,可省去 return语句。 ② return语句的后面可以有括号,也可以没有。如: return z;冷 return(z); ③ return语句的后面可以是变量,也可以是表达式。如: return(x >y x: y); ④ return语句返回值的类型应与该函数的类型一致。 否则以函数类型为准
2.函数的返回值 函数的返回值是通过return语句获得的。当不需返 回函数值时,可省去return语句。 return语句的后面可以有括号,也可以没有。如: return z; return(z); return语句的后面可以是变量,也可以是表达式。如: return(x >y ? x : y); return语句返回值的类型应与该函数的类型一致。 否则以函数类型为准
⑤若函数中没有 return语句,则该函数被调用后也会带 回不确定的值。如: iint a, b, C, a= printstar(); 均为处理字符串的函数 b= print_message();/且均没有reun语句 c= printstar(; printf("%d, %d, %dIn",a,b, c); 输出的a,b,c的值将是各个被处理的字符串的长度 ⑥为了明确表示不需要函数返回值,可以用“vod定义 函数为无类型”。此时,不得使用a= printstar()之 类的语句。 凡不需要返回值的函数,一般均定义为“vod”类型
若函数中没有return语句,则该函数被调用后也会带 回不确定的值。 { int a, b, c ; a = printstar( ); b = print_message( ); c = printstar( ); printf(“%d,%d,%d\n”,a,b,c); } 输出的a, b, c的值将是各个被处理的字符串的长度。 为了明确表示不需要函数返回值,可以用“void”定义 函数为 “无类型”。此时,不得使用 a=printstar( ) 之 类的语句。 凡不需要返回值的函数,一般均定义为“void”类型。 如: 均为处理字符串的函数 且均没有 return 语句
54函数的调用 1.函数调用的一般形式 函数名(实参表) 说明 ①对于无参函数,尽管没有“实参表”,但也不得省略 括号 ②“实参表”中的参数之间用逗号分开。 ③实参与形参之间的个数及类型必须一一对应。 ④对实参求值的顺序是自左至右还是自右至左,视具体 的系统而定。 Turbo c和Msc是按自右至左的顺 序求值
5.4 函数的调用 1.函数调用的一般形式 函数名(实参表) 说明: 对于无参函数,尽管没有“实参表”,但也不得省略 括号。 “实参表”中的参数之间用逗号分开。 实参与形参之间的个数及类型必须一一对应。 对实参求值的顺序是自左至右还是自右至左, 视具体 的系统而定。Turbo C 和 MS C 是按自右至左的顺 序求值
例52 main( 注意:这里是按自右至左求 i int i=2.p 值的,相当于fun(33)若 p=f(,(++i; 按自左至右求值,则相当于 printf/d,; fun(2,3),则输出为-1。 int f(a, b), 先执行++使i的值为3 int a. b 然后将i的值3传递给a iint c if (a>b)C=1;1 a的值为3,b的值为3 else if (a==b)C=0; else c==1 return(c) 输出结果 0
例5.2 main( ) { int i =2 , p ; p = f( i, ++i ); printf ( “%d”, p ) ; } int f(a, b ) ; int a, b ; { int c ; if ( a > b ) c = 1; else if ( a == b ) c = 0 ; else c = –1 ; return( c ) ; } 输出结果: 0 注意: 这里是按自右至左求 值的,相当于 fun(3,3)。若 按自左至右求值,则相当于 fun(2,3), 则输出为–1。 先执行++i 使 i 的值为3 再将 i 的值 3 传递给 b b的值为3 然后将 i 的值 3 传递给a a的值为3