2、无参数有返回值的函数 数的返回 格式 rerurn.美 #include <stdio.h> 说明itsm( 表 imai 注意;如果不将函数调用赋值给任何变量 它的返回值将被丢弃! printf("x=%d n",x);V int func O 数 制 float=5 函数将返回2,而不是25 f=f/2; return(f); ☆☆第6犁
☆☆ 第6章 函数 21 2、无参数有返回值的函数 ➢ 函数的返回 ✓ 表达式的值即是函数的返回值; ✓ 函数体中一般都包含return(表达式)语句, 如果 没有, 函数也会返回一个值。这个值是不可预知的, 将 会使程序可能犯有逻辑错; ✓ 一般情况下,表达式值的类型应与函数返回值类 型一致; ✓ 当return(表达式)语句中的表达式的类型与函数 的返回值类型不一致时,编译器将对表达式进行强制 类型转换, 将表达式的值强制转换成函数返回值类型, 然后返回给调用者。 ⚫ 格式 rerurn (表达式); 或 rerutn 表达式; ⚫ 说明 #include <stdio.h> int sum ( ); void main ( ) { int x; x = sum ( ); printf (“x = %d\n", x); } int sum ( ) { int i, tot = 0; for (i = 1; i <= 100; i ++) tot += i; } 因sum函数无return语句, x的值将是无法预知的! 应加上 return tot; 语句 int func ( ) { float f = 5; f = f / 2; return ( f ); } 函数将返回2,而不是2.5 注意:如果不将函数调用赋值给任何变量, 它的返回值将被丢弃!
3、有参数无返回值的函数 至少要有一项。形参之间 定叉福写 要用竭号“,》盼 oid函数名(类型符1形参名1,类型符2形参名2,,类型符m形参名n 变量声明部分1函体 形参列表 执行部分 明彩参 不允许对 彩参職物 函数用途 此类烈的函数主要是祝据形参的值来选行某种事务的处 理。灵活性上要比无形参的函数强,它更能体现调用函数与 被调函数之间的数据联系。 函数的原型声明 void函数名(类型符1形参名1,类型符2形参名2,,类型符n形参名m); 或 void函数名(类型符1,类型符2,…,类型符n);
☆☆ 第6章 函数 22 3、有参数无返回值的函数 ➢ 定义格式 void 函数名 (类型符1 形参名1,类型符2 形参名2,… , 类型符n 形参名n ) { 变量声明部分 执行部分 } 函数体 ➢ 函数用途 此类型的函数主要是根据形参的值来进行某种事务的处 理。灵活性上要比无形参的函数强,它更能体现调用函数与 被调函数之间的数据联系。 ➢ 函数的原型声明 void 函数名(类型符1 形参名1, 类型符2 形参名2, … , 类型符n 形参名n ); 或 void 函数名(类型符1 , 类型符2 , … , 类型符n ); 形参列表 至少要有一项,形参之间 要用逗号“ , ”分开 指明形参类型 不允许对 形参赋初值
3、有参数无返回值的函数 鼻参可以是常量、变量、 调用 我站式、函数亭 函数名(实参1,实参2,…实参n); 注意事项 (1)实参列衰中的实参必须与函数定义时的形参数量相 同、类型相符。 (2)值对应关系: 实参1->形参1 实参2->形参2 实参n->形参n (3)实参表求值顺序(即实参赋值给形参的顺序 因系统而定。TC、BC、VC均是自右向左,也就是说最 右边的实参最先赋值给最右边的形参最左边的实参最后 赋值给最左边的形参。但VC与TC、BC在具体赋值时稍有 不同,注意它们之间的区别。 ☆☆第6章函数 23
☆☆ 第6章 函数 23 3、有参数无返回值的函数 ➢ 函数调用 函数名( 实参1,实参2,……,实参n ); 实参可以是常量、变量、 表达式、函数等 注意事项: (1) 实参列表中的实参必须与函数定义时的形参数量相 同、类型相符。 (2) 赋值对应关系: 实参1 -> 形参1 实参2 -> 形参2 …… 实参n -> 形参n (3)实参表求值顺序(即实参赋值给形参的顺序) 因系统而定。TC、BC、VC均是自右向左,也就是说最 右边的实参最先赋值给最右边的形参, 最左边的实参最后 赋值给最左边的形参。但VC与TC、BC在具体赋值时稍有 不同,注意它们之间的区别
3、有参数无返回值的函数 #include <stdio.h> 原型声商明 void compare(int a, int b); void main O 动为实参 inti=2.i=3 compare( E printf(i=%od,j=%d\nAi1i a、b为参 void compare((nt a, int b) 运行缩果(在VC下) printf(a=%d b=%d\n", a, b); a=2b=3 if(a>b) a< b printf(a>bIn"); i=2,j=3 else if(a= b 参i2j3 printf(a=bIn) e se Printf(°a<bmy) 3
☆☆ 第6章 函数 24 3、有参数无返回值的函数 #include <stdio.h> void compare (int a, int b); void main ( ) { int i = 2,j=3; compare ( i, j ); printf ("i = %d,j=%d\n", i,j); } void compare ( int a, int b ) { printf ("a = %d b = %d\n", a, b); if ( a > b) printf ("a > b\n"); else if (a == b) printf ("a = b\n"); else printf ("a < b\n"); } i,j为实参 a、b为形参 原型声明 a = 2 b = 3 a < b i = 2,j=3 运行结果(在VC下) i 2 j 3 a b 实参 形参 ① 3 ② 2 2
4、有参数有返回值的函数 定叉福写 返回值类型符函数名(类型符1形参名1,,类型符n形参名n 变量声明部分1函体 形参列表 执行部分 函数用途 此类型的函数主要是叔据彩参的来进行种事务的处 ,同时可将处理后的绾录值巡回給调用函款。它最能体现 调用函数与被调函数之间的数据联系。 函数的原型声明 返回值类型符函数名(类型符1形参名1,…类型符n形参名n); 返回值类型符函数名(类型符1,类型符2,…,类型符n);
☆☆ 第6章 函数 25 4、有参数有返回值的函数 ➢ 定义格式 返回值类型符 函数名 (类型符1 形参名1,… … , 类型符n 形参名n ) { 变量声明部分 执行部分 } 函数体 ➢ 函数用途 此类型的函数主要是根据形参的值来进行某种事务的处 理,同时可将处理后的结果值返回给调用函数。它最能体现 调用函数与被调函数之间的数据联系。 ➢ 函数的原型声明 返回值类型符 函数名(类型符1 形参名1, …… , 类型符n 形参名n ); 或 返回值类型符 函数名(类型符1 , 类型符2 , …… , 类型符n ); 形参列表