4、有参数有返回值的函数 调用 函数名(实参1,实参2,……实参n) 变量名=函数名(实参1,实参2,…实参n); #include <stdio. h> int max(inta,intb);/函数的原型声明 void main O int a, b, c; scanf ("%d%d", &a, &b); c=max(a,b);/函数调用(a、b为实参 printf( "the biggest number is: %d\n", c); int max(inta,intb)/数定义(a、b为形 运行结果: return(a>b? a: b); 59 the biggest number is 9 ☆0平西欲
☆☆ 第6章 函数 26 4、有参数有返回值的函数 ➢ 函数调用 函数名( 实参1,实参2,……,实参n ); 或 变量名 = 函数名( 实参1,实参2,……,实参n ); #include <stdio.h> int max (in t a, int b); //函数的原型声明 void main ( ) { int a, b, c; scanf ("%d%d", &a, &b); c = max (a, b); //函数调用(a、b为实参) printf ("the biggest number is : %d\n", c); } int max (int a, int b) //函数定义(a、b为形参) { return (a > b ? a : b); } 运行结果: 5 9↙ the biggest number is 9
63函数调用与参数传递 函数调用和函数说明小结 函数调用 ●函数语句: ° printstar ; printf(“Hell, World!n”); ●函数表达式: 例: m= max(a 幺2 ●函数参数: 例: printf(“%d”,max(a,b); m= max(a, max(b, c )); ☆☆第章画数 27
☆☆ 第6章 函数 27 函数调用和函数说明小结 ➢ 函数调用 ⚫ 函数语句: 例:printstar ( ); printf (“Hello,World!\n”); ⚫ 函数表达式: 例: m = max (a, b) * 2; ⚫ 函数参数: 例: printf (“%d”, max(a,b)); m = max (a, max(b,c)); 6.3 函数调用与参数传递
函数说明 对破调用倒数要求: √必须是已存在的函数 √库函数:# nclude<*h> 用户自定义函数:函数类型说明 ●函数说明 √一般形式:函数类型函数名(形参类型形参名] 或 函数类型函数名(); √作用:告诉编译系统函数类型、参数个数及类型,以便检验 函数定义与函数说明不同 √函数说明位置:程序的数据说明部分(函数内或外) √下列情况下,可不作函数说明 ◆若函数返值是char或in型,系统自动按in型处理 ◆被调用函数定义出现在主调函数之前 √有些系统如BC、VO腰求函数说明指出函数返值类型和形参类型, 并且对void和int型函数也要进行函数说明 ☆☆第章画数 28
☆☆ 第6章 函数 28 ➢ 函数说明 ⚫ 对被调用函数要求: ✓ 必须是已存在的函数 ✓ 库函数: #include <*.h> ✓ 用户自定义函数: 函数类型说明 ⚫ 函数说明 ✓ 一般形式: 函数类型 函数名(形参类型 [形参名],….. ); 或 函数类型 函数名( ); ✓ 作用:告诉编译系统函数类型、参数个数及类型,以便检验 ✓ 函数定义与函数说明不同 ✓ 函数说明位置:程序的数据说明部分(函数内或外) ✓ 下列情况下,可不作函数说明 ◆ 若函数返值是char或int型,系统自动按int型处理 ◆ 被调用函数定义出现在主调函数之前 ✓ 有些系统(如BC、VC)要求函数说明指出函数返值类型和形参类型, 并且对void 和 int 型函数也要进行函数说明
63函数调用与参数传递 今63.2参数传递 参数是函数调用进行信息交互的载体分形参和实参。 形式参数又称为形参或虚参:定义函数时,写入函数圆括 号内的参数。事实上,形参是一种局部变量它在函数被调 用前并没有被分配存储空间,也没有具体的值。形参仅仅 是一个“符号”。 实际参数又称为实参:调用函数时,写入函数圆括号内的 参数,可以是常量、变量或表达式,它有具体的值。对于 实参变量而言,它已经被分配了相应的存储空间。 函数之间参数的传递 调用有参函数,系统根据形参的类型为其分配存储 空间,其内容为形参的值。调用时应该提供与 形参匹配的实参,匹配个数和类型。 ☆☆第章画数 29
☆☆ 第6章 函数 29 6.3 函数调用与参数传递 ❖6.3.2 参数传递 参数是函数调用进行信息交互的载体,分形参和实参。 ▪ 形式参数又称为形参或虚参:定义函数时,写入函数圆括 号内的参数。事实上,形参是一种局部变量,它在函数被调 用前并没有被分配存储空间,也没有具体的值。形参仅仅 是一个“符号” 。 ▪ 实际参数又称为实参:调用函数时,写入函数圆括号内的 参数,可以是常量、变量或表达式,它有具体的值。对于 实参变量而言,它已经被分配了相应的存储空间。 函数之间参数的传递: 调用有参函数,系统根据形参的类型为其分配存储 空间,其内容为形参的值。调用时应该提供与 形参匹配的实参,匹配——个数和类型
例:交换网个數(怜递方式) ①调用前 #include <stdio. h> void swap(int a, int b); void main O ② intx=7,y=ll; printf("before swapped printf(x=%od, y=%odn",x, y); swap(r, y); printf(after swapped: ) printf(x=%d, y=%odin,x,y); ③swap X void swap (int a, int b) Why? a7 int temp; temp 运行结果 a=b; before swapped: x=7, y=11 b=temp; after swapped:x=7,y=1l ④调用结束 X|7 ☆
☆☆ 第6章 函数 30 x 7 y 11 ② 调用 例: 交换两个数(值传递方式) #include <stdio.h> void swap (int a, int b); void main ( ) { int x = 7, y = 11; printf ("before swapped: "); printf ("x=%d, y=%d\n", x, y); swap (x, y); printf ("after swapped: "); printf ("x=%d, y=%d\n", x, y); } void swap (int a, int b) { int temp; temp = a; a = b; b = temp; } 运行结果: before swapped: x = 7, y = 11 after swapped: x = 7, y = 11 x 7 y 11 ① 调用前 a 7 b 11 ③ swap x 7 y 11 a 7 b 11 temp 7 11 7 x 7 y 11 ④ 调用结束 Why? x 7 y 11 ② 调用 x 7 y 11 ① 调用前 ③ swap x 7 y 11 a 7 b 11 temp x 7 y 11 ② 调用 x 7 y 11 ① 调用前 x 7 y 11 ④ 调用结束 ③ swap x 7 y 11 a 7 b 11 temp x 7 y 11 ② 调用 x 7 y 11 ① 调用前