高级程序设计语言 吴凡 TEL:83202682 E-mail:cdwf@tom.com
高级程序设计语言 吴 凡 TEL: 83202682 E-mail: cdwf@tom.com
第八章函数 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 第八章 函数
概述 ●模块化 include Stdio. h 个较大的程序一般被 void printstar0 划分为若干个程序模块 每个模块来实现某一个 printf("*★*★★★★★★★★★★★★\n"); 特定的功能 void print message ( ●C语言中,用函数来实 现程序模块的功能 printf ("How do you do! \n") 例:(P143例8.1)main( 结果 printstar() ★★★★★★★★大★★;★大★ print message()i H。 w do you do printstar() ★★★★★★★★大★★;★大★ 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 概述 ⚫ 模块化 ⚫ 一个较大的程序一般被 划分为若干个程序模块, 每个模块来实现某一个 特定的功能 ⚫ C语言中,用函数来实 现程序模块的功能 ⚫ 例:(P143例8.1) 结果: #include "stdio.h" void printstar() { printf("****************\n"); } void print_message() { printf("How do you do!\n"); } main() { printstar(); print_message(); printstar(); } *************** How do you do ***************
概述 ●C程序执行的入口点是main函数,并且程序 的执行主体是在man函数内 ●在ma函数中调用其它函数(子函数)完成某 项功能,该函数执行完成后,任回到main函数 程序在man函数结束时结束 所有的子函数的地位都是平等的,不能在 子函数中定义函数 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 概述 ⚫ C程序执行的入口点是main函数,并且程序 的执行主体是在main函数内 ⚫ 在main函数中调用其它函数(子函数)完成某 项功能,该函数执行完成后,任回到main函数 ⚫ 程序在main函数结束时结束。 ⚫ 所有的子函数的地位都是平等的,不能在 子函数中定义函数
概述 ●C语言函数分类 从函数定义的角度: ●标准函数(库函数):由系统提供,用户可以直接 使用(在使用库函数的源文件中应首先#inc!ude其 对应的头文件) ●用户定义函数:由用户定义的函数 ●从函数形式的角度: ●无参函数,例: getchar; 有参函数,例: strcpy(sr1,str2); 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 概述 ⚫ C语言函数分类 ⚫ 从函数定义的角度: ⚫ 标准函数(库函数):由系统提供,用户可以直接 使用(在使用库函数的源文件中应首先#include其 对应的头文件) ⚫ 用户定义函数:由用户定义的函数 ⚫ 从函数形式的角度: ⚫ 无参函数,例:getchar(); ⚫ 有参函数,例:strcpy(str1,str2);
函数定义的一般形式 函数定义的一般形式: 类型说明函数名(形式参数说明1 定义局部变量 声的部分 明外部变量、函数 数体 形式参数说明的一般形式: 类型说明变量1[类型说明变量2,… int max (int nt y) int z x>y x:yi return(z) 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 函数体 函数定义的一般形式 ⚫ 函数定义的一般形式: 类型说明 函数名([形式参数说明]) { 定义局部变量 声明外部变量、函数 语句 } ⚫ 形式参数说明的一般形式: 类型说明 变量1 [,类型说明 变量2, ...] int max(int x, int y) { int z; z = x>y ? x : y; return(z); } 声明部分
函数定义的一般形式 无参函数的定义形式 void print message ( 类型说明函数名0 printf("How do you 声明部分 do!\n"); 语句 2.有参函数的定义形式 int max (int x, int y) 类型说明函数名(形式参数说明) int zi 声明部分 x>y x:Y return(z)i 语句 3.空函数的定义形式 int draw circle o 类型说明函数名形式参数说明])/* draw a circle*/ 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 函数定义的一般形式 1. 无参函数的定义形式 类型说明 函数名() { 声明部分 语句 } 2. 有参函数的定义形式 类型说明 函数名(形式参数说明) { 声明部分 语句 } 3. 空函数的定义形式 类型说明 函数名([形式参数说明]) { } void print_message() { printf("How do you do!\n"); } int max(int x, int y) { int z; z = x>y ? x : y; return(z); } int draw_circle() { /*draw a circle*/ }
函数的参数和涵数的值 般情况下,主调函数与被调函数之间存 在数据传递关系(通信关系) 主调函数main() int a, b,gi ●主调函数将数据传递 scanf(odod &a,&b) 给被调函数;一函 g max(a, b)i 数参数 printf("Maxnum: 8d\n",g)i ●被调函数处理完成后 a 返回主调函数,并将 int max (int x, int y) 得到的结果返回给主 被调函数 调函数—函数返回 int z x>y? x Y 值 return(z)i
电子科技大学通信与信息工程学院 int max(int x, int y) { int z; z = x>y ? x : y; return(z); } ⚫ 一般情况下,主调函数与被调函数之间存 在数据传递关系(通信关系) main() { int a, b, g; scanf("%d%d", &a,&b); g = max(a, b); printf("Max_num:%d\n",g); } 函数的参数和函数的值 a b z 主调函数 被调函数 ⚫ 主调函数将数据传递 给被调函数;——函 数参数 ⚫ 被调函数处理完成后, 返回主调函数,并将 得到的结果返回给主 调函数——函数返回 值
形式参数和实际参数 形式参数 #立nc1ude" stdio.h ●函数参数:用于函数 int max(intx,inty) 间数据的传递 int z 形式参数(形参) x>y x:yi return(z)i 定义函数时使用的参 数 main() 实际参数(实参): int a, b, g 引用(调用)函数时 scanf(dd", &a, &b) 使用的参数 g max(a, b)i printf("Max _hum: 8d\n",g); 实际参数 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 #include "stdio.h" int max(int x, int y) { int z; z = x>y ? x : y; return(z); } main() { int a, b, g; scanf("%d%d", &a,&b); g = max(a, b); printf("Max_num:%d\n",g); } 形式参数和实际参数 ⚫ 函数参数:用于函数 间数据的传递 ⚫ 形式参数(形参): 定义函数时使用的参 数 ⚫ 实际参数(实参): 引用(调用)函数时 使用的参数 形式参数 实际参数
形式参数和实际参数 ●C语言如何实现函数间的数据传递? 传递方式:值传递 ●单向传递(实参→形参) ●将实参的值拷贝给形参 int max(intx,inty) 主调函数 内存空间2 5 return(z) 被调函数 内存空间2 5 main o Y g=max( a, b) 电子科技大学通信与信息工程号完
电子科技大学通信与信息工程学院 形式参数和实际参数 ⚫ C语言如何实现函数间的数据传递? ⚫ 传递方式:值传递 ⚫ 单向传递(实参→形参) ⚫ 将实参的值拷贝给形参 ... int max(int x, int y) { .... return(z); } main() { ... g = max( a, b ); ... } 2 5 2 5 主调函数 内存空间 被调函数 内存空间 a b x y