文档介绍:第五章函数? 概述–结构化程序设计?基本思想:将一个大的程序按功能分割成一些小模块, ?特点: –各模块相对独立、功能单一、结构清晰、接口简单–控制了程序设计的复杂性–缩短开发周期–避免程序开发的重复劳动–易于维护和功能扩充?开发方法: 自上向下,逐步细化,模块化设计 C是结构化程序设计语言源程序文件1 预编译命令说明部分执行部分函数1 函数n 源程序文件i源程序文件n C程序C程序结构?一个 C程序由一个或多个源程序文件组成。这样可以分别编写、分别编译,提高调度效率。?一个源程序文件由一个或多个函数组成。一个源程序文件是一个编译单位。例 main( ) { printstar ( ); print_message( ); printstar ( ); } printstar ( ) { printf ( “********** \n”); } print_message( ) { printf( “ How do you do ! \n ”); } ?一个 C语言源程序可由一个主函数和若干个辅助函数组成?必须有且只能有一个名为 main 的主函数? C程序的执行总是从 main 函数开始, 在main 中结束?由main 函数调用其他函数,其他函数也可以互相调用。–函数分类?从用户角度–标准函数(库函数) :由系统提供。–用户自定义函数:根据特殊需要编写,实现特定的功能。?从函数形式–无参函数:使用时不需要给函数提供数据信息–有参函数:使用时需要给函数提供数据信息,按照提供的数据不同,在使用函数后获得不同的结果。使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件#include< > ? 函数的定义?一般格式合法标识符函数返回值类型缺省 int型无返回值 void 函数体函数类型函数名(形参类型说明表) {说明部分语句部分} 现代风格:例有参函数(现代风格) 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); } 例空函数 dummy( ) { } 函数体为空例无参函数 printstar ( ) { printf (“********** \n”); } 或 printstar( void ) { printf (“********** \n”); } 函数类型函数名(形参表) 形参类型说明{说明部分语句部分} 传统风格:例有参函数(传统风格) int max( x,y ) int x,y; { int z; z=x>y?x:y; return(z); } ??函数的返回值–返回语句?形式: return( 表达式); 或 return 表达式;或 return; ?功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数?说明: –函数中可有多个 return 语句,函数遇到第一个则返回,函数的返回值为第一个 return 语句中表达式的值–若无 return 语句,遇}时,自动返回调用函数–若函数类型与 return 语句中表达式值的类型不一致,按前者为准, void 型函数例无返回值函数 void swap(int x,int y ) { int temp; temp=x; x=y; y=temp; } printstar () { printf ("********** "); } main() { int a; a= printstar (); printf("%d",a );} 例函数带回不确定值(函数体内无 return 语句) 输出: 10 void printstar () { printf ("********** "); } main() { int a; a= printstar (); printf("%d",a );} 编译错误! 不要求带回函数值? 函数的调用与说明–调用形式函数名(实参表);–说明: (1)函数调用语句中函数名与函数定义的名字相同。(2)对标准函数不需要定义,可以直接调用,但要使用#include 包含标准函数所在的头文件。(3)有参函数调用时参数表中列出的参数是实际参数(简称实参)。实参的形式为: