第7章函数 模块化设计 Advanced Programming
Advanced Programming 第7章 函数 -------模块化设计
主要内容 、概述 、函数定义的一般形式 三、函数参数和函数的值 四、函数的调用 五、函数的豪调用 六、函教的递归调用 七、数组作为函数参数 变量的存储类别 九、内部函数和外部函数 十、远行一个多文件的程序 Advanced Programming
Advanced Programming 主要内容 一、概述 二、函数定义的一般形式 三、函数参数和函数的值 四、函数的调用 五、函数的嵌套调用 六、函数的递归调用 七、数组作为函数参数 八、变量的存储类别 九、内部函数和外部函数 十、运行一个多文件的程序
概述 函数的概念:一个子程序段,能完成特定的功能。 存在位置 1.c 2h 函数1 函数4 函数2 函数3 函数5 Advanced Programming
Advanced Programming 一、概述 1、函数的概念:一个子程序段,能完成特定的功能。 存在位置: 1.c 2.h 函数1 函数3 函数2 函数4 函数5
概述 (1)各函数包含在一个文件中 #include void main() void printstar( 运行结果: void print message(); printstar() How do you do! print message( ) printstar( i void printstaro) { printf(“*数数数数n”);} void print message( printf(“ How do you do!n”); Advanced Programming
Advanced Programming (1) 各函数包含在一个文件中 #include void main( ) {void printstar( ); void print_message( ); printstar( ); print_message( ); printstar( ); } void printstar( ) {printf (“***********************\ n” ); } void print_message( ) {printf (“_ _ _ _ _How_do_you_do!\n”) ;} 运行结果: **************************** How do you do! *********************** ***** 一、概述
概述 (2)文件包含的方法 在主函数中使用文件包含预编译命令,将不在本文件 而在其它文件中的函数进行预编译处理把各文件中的函数 包含到本文件中来,然后一起进行编译、连接、运行。 include“T7-1-2.c” T7-12.c include“T7-1-3.c” pIo Printf( :kk:kk次 7757577757275 7 man n p1();p2();pl() 运行结果同上 T7-1-3.c p2() printf(“ How do you do!\n”);} Advanced Programming
Advanced Programming (2)文件包含的方法 在主函数中使用文件包含预编译命令,将不在本文件 而在其它文件中的函数进行预编译处理把各文件中的函数 包含到本文件中来,然后一起进行编译、连接、运行。 #include “T7-1-2.c” #include “T7-1-3.c” main( ) {p1( ); p2( ) ; p1( ) ; } 运行结果同上 T7-1-2.c p1( ) {printf (“*********************\n”); } T7-1-3.c p2( ) {printf (“ How do you do!\ n”); } 一、概述
概述 例:在屏幕上输出“ How do you do? stdio h 3.c printf #include 函数 void maino 函数2 函数3 printf( "How do you do? Advanced Programming
Advanced Programming 例:在屏幕上输出“How do you do ?” stdio.h printf 函数 函数3 函数2 #include void main() { printf(“How do you do ?”); } 3.c 一、概述
概述 2、函数调用方式: 不能被调用 分为 库函数和 main 所有函数都是 自定义函数 平行的,不能 嵌套定义 a b C a ab b1 b2 Advanced Programming
Advanced Programming 2、函数调用方式: main a b c a1 ab b1 b2 不能被调用 所有函数都是 平行的,不能 嵌套定义 分为: 库函数和 自定义函数 一、概述
概述 几点说明: (1)一个源文件由一个或者多个函数组成 (2)一个C程序由一个或者多个源文件组成。 (3)C程序的执行从main函数开始 (4)所有的子函数都是平行的。 (5)从用户的角度看,函数分库函数和自定义函数。 (6)函数形式: ①无参函数:主调函数无数据传送给被调函数可 带或不带返回值。 ②有参函数:主调函数与被调函数间有参数传递, 主调函数可将实参传送给被调函数的形参,被调 函数的数据可返回主调函数 Advanced Programming
Advanced Programming 几点说明: (1)一个源文件由一个或者多个函数组成。 (2)一个C程序由一个或者多个源文件组成。 (3)C程序的执行从main 函数开始。 (4)所有的子函数都是平行的。 (5)从用户的角度看,函数分库函数和自定义函数。 (6)函数形式: ①无参函数:主调函数无数据传送给被调函数,可 带或不带返回值。 ②有参函数:主调函数与被调函数间有参数传递, 主调函数可将实参传送给被调函数的形参, 被调 函数的数据可返回主调函数。 一、概述
二、函数定义的一般形式 、无参函数的定义形式 ◆类型标识符: ●用于指定函数带回的值的类型,不写时为in型。 不带回值时可以不写。 合法标识符 例无参函数 printstar( 类型标识符函数名() prit“n”;}说明部分 或 语句 printstar(void { printi(“*n”); 函数体 Advanced Programmng
Advanced Programming 二、函数定义的一般形式 1、无参函数的定义形式 ❖类型标识符: ⚫用于指定函数带回的值的类型,不写时为int型。 ⚫不带回值时可以不写。 类型标识符 函数名() { 说明部分 语句 } 例 无参函数 printstar( ) { printf(“**********\n”); } 或 printstar(void ) { printf(“**********\n”); } 合法标识符 函数体
二、函数定义的一般形式 函数返回值类型 2、有参函数定义的一般形式 隐含为n型 现代风格:类型标识符函数名(形式参数表列) 说明部分 函数体 语句 例有参函数(现代风格)例有参函数(现代风格) int max(int x, int y) int max(int x, y int z; i int z; ZFX>Y? y:xy, FXy:xy, return(z; return(z) Advanced Programming
Advanced Programming 2、有参函数定义的一般形式 类型标识符 函数名(形式参数表列) { 说明部分 语句 } 现代风格: 函数返回值类型 隐含为int型 函数体 例 有参函数(现代风格) int max(int x,int y) { int z; z=x>y?x:y; return(z); } 例 有参函数(现代风格) int max(int x, y) { int z; z=x>y?x:y; return(z); } 二、函数定义的一般形式