二、函数定义的一般形式 3、空函数 ◆为扩充功能预留,在主调函数中先占一个位置。 类型标识符函数名() 例空函数 dummy 函数体为空 Advanced Programming
Advanced Programming 3、空函数 ❖为扩充功能预留,在主调函数中先占一个位置。 类型标识符 函数名() { } 例 空函数 dummy( ) { } 函数体为空 二、函数定义的一般形式
函数参数和函数的值 1、形式参数和实际参数 形式参数:定义函数时函数名后面括号中的变量名 ◆实际参数:调用函数时函数名后面括号中的表达式 例比较两个数并输出大者 #include <stdio.h> c三max(a);(main函数) void main(0 max(intx, int(max函数){ nt max(int x, int y i int z; int a, b, c; y:x:y, scanf(%d, %d", &a, &b) return(z) c=max( a, bi 实参 printf( Max is %d", c); 3 max(int x, int y) 形参 运行:7,8 f int z; M ax s FXy:xy, return(z)
Advanced Programming 三、函数参数和函数的值 1、形式参数和实际参数 ❖形式参数:定义函数时函数名后面括号中的变量名 ❖实际参数:调用函数时函数名后面括号中的表达式 例 比较两个数并输出大者 #include <stdio.h> void main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("Max is %d",c);} max(int x, int y) { int z; z=x>y?x:y; return(z);} 形参 实参 c=max(a,b); (main 函数) max(int x, int y)(max 函数) { int z; z=x>y?x:y; return(z); } 运行:7,8 Max is 8
函数参数和函数的值 ◆几点说明: ●实参可以是常量、变量或表达式。必须有确定的值。当函数调 用时,将实参的值传递给形参,若是数组名,则传送的是数组 首地址。 ●形参必须指定类型,只能是简单变量数组,不能是常量或表 达式 ●形参与实参类型一致,个数相同顺序相同。 若形参与实参类型不一致,自动按形参类型转换函数调 用转换 ●形参在函数被调用前不占内存;函数调用时为形参分配内存;调 用结束,内存释放 ●实参对形参的数据传送是值传送,也是单向传送,当被调函数 的形参发生变化时,并不改变主调函数实参的值。形实参占 据的是不同的存储单元 Advanced Programming
Advanced Programming ❖几点说明: ⚫实参可以是常量、变量或表达式。必须有确定的值。当函数调 用时,将实参的值传递给形参,若是数组名,则传送的是数组 首地址。 ⚫形参必须指定类型,只能是简单变量或数组,不能是常量或表 达式 ⚫形参与实参类型一致,个数相同顺序相同。 ⚫若形参与实参类型不一致,自动按形参类型转换———函数调 用转换 ⚫形参在函数被调用前不占内存;函数调用时为形参分配内存;调 用结束,内存释放 ⚫实参对形参的数据传送是值传送,也是单向传送,当被调函数 的形参发生变化时,并不改变主调函数实参的值。形、实参占 据的是不同的存储单元 三、函数参数和函数的值
例:形、实参占据的是不同的存储单元 #include <stdio.h> void main fd22+8=10 void add(int x, int y); fd43+12=15y int a=2, b=3 ffd 2 a printf(“a=%d,b=%dm”,a,b); ffds 3 printf((“&a=%x,&b=%xn”,a,&b); add(a, b) printf((“a=%d,b=%dn”,a,b); 运行结果: a=2,b=3 printf((“&a=%x,b=%Xn”,&a,&b); &a=ffd &b=ffds x=10,v=15 void add(int x, int y) {x=x+8;y=y+12: &x=ffd2, &y=ffd4 a=2b=3 printf((“x=%d,y=%dn”,x,y); printf((“&x=%x,&y=%xn”,&x,&y); &a=ffd&b=ffds Advanced Programming
Advanced Programming 例:形、实参占据的是不同的存储单元 #include <stdio.h> void main( ) {void add(int x,int y); int a=2,b=3; printf (“a=%d, b=%d\n”,a, b); printf(“&a=%x,&b=%x\n”,&a,&b); add(a,b); printf(“a=%d,b=%d\n”, a,b); printf(“&a=%x,&b=%x\n”, &a,&b); } void add(int x,int y) {x=x+8; y=y+12; printf(“x=%d,y=%d\n”,x,y); printf(“&x=%x,&y=%x\n”,&x,&y); } 2+8=10 3+12=15 2 3 ffd2 ffd4 ffd6 ffd8 x a y b 运行结果: a=2,b=3 &a=ffd6,&b=ffd8 x=10,y=15 &x=ffd2,&y=ffd4 a=2, b=3 &a=ffd6,&b=ffd8
、函数参数和函数的值 2、函数的返回值 ◆返回语句形式: return(表达式);或 return表达式; ◆功能:使程序控制从被调用函数返回到 调用函数中,同时把返值带给调用函数 Advanced Programming
Advanced Programming 2、函数的返回值 ❖返回语句形式: return(表达式);或 return 表达式; ❖功能:使程序控制从被调用函数返回到 调用函数中,同时把返值带给调用函数 三、函数参数和函数的值