C语言程序设计课件:函数 .ppt
变量的生命期register寄存器局部变量的生命期:和自动局部变量相同。只是存储的位置,不在内存,而在CPU的寄存器中。(不常用)可以把使用频率高的变量定义为register,提高程序执行的速度。寄存器变量只能用于整型和字符型。变量的个数受CPU寄存器数目的限制。超限时,编译器将其转换为自动局部变量。变量的生命期全局变量的存储类型只允许有两种:staticextern比较大型的程序,通常由多个文件组成。变量的生命期比较大型的程序,通常由多个源文件组成。变量的生命期比较大型的程序,通常由多个源文件组成。变量的生命期全局变量的存储类型只允许有两种:使用extern对全局变量做扩展声明:若在函数体外,有效范围为:从声明时致该文件结束。若在函数体内,有效范围为:从声明时致该函数结束。static静态全局变量:不可以被其他文件使用。试图extern一个静态全局变量,将导致编译错误。在定义时,若无赋值说明,将赋其初值为0。函数的传址调用includestdio.hvoiddisplayChars(chars,unsignedintqty){ unsignedinti; printf(“\n”); for(i=0,iqty,++i) printf(“%c”,s); printf(“\n”);}传值调用函数的传址调用#includestdio.hvoidsortnum(double*,double*);intmain(){doublefirstnum,secnum;printf(Entertwonumbers:);scanf(%lf%lf,firstnum,secnum);sortnum(firstnum,secnum);printf(Thesmallernumberis%6.2f,firstnum);printf(\nThelargernumberis%6.2f\n,secnum);return0;}voidsortnum(double*nm1Addr,double*nm2Addr){doubletemp;if(*nm1Addr*nm2Addr){temp=*nm1Addr;/*savefirstnumsvalue*/*nm1Addr=*nm2Addr;*nm2Addr=temp;/*changesecnumsvalue*/}return;}函数的传址调用Storingaddressesinparameters函数的传址调用Indirectlystoringfirstnum’svalue函数的传址调用Indirectlychangingfirstnum’svalue函数的传址调用Indirectlychangingsecnum’svalue回顾#include预处理说明#define符号常量名表达式函数原形全局变量定义语句;intmain(){ 局部变量定义语句; 其他语句; return0;}函数定义C程序语句的排列:回顾变量的作用域:在变量占用存储空间的时间内是否能够被引用,即变量作用的有效范围。局部变量/内部变量:在一个函数内部定义的变量(内部变量)。有效范围:从定义变量的位置开始直到该函数结束。全局变量/外部变量:在函数外部定义的变量(外部变量)。有效范围:从定义变量的位置开始直到本源文件结束。回顾变量的生命期:变量占用存储空间的时限,由变量的存储类型决定。C语言规定:存贮类型符放在变量定义的最前面。例:staticinta,b;局部变量的存储类型只允许有三种:autostaticregister函数的定义与声明
--函数的调用Storingvaluesintoparameters函数的传值调用:实参向形参进行单向的数值传递。函数的定义与声明
--函数的调用函数调用的执行:/*thefollowingisthefunctionfindMax*/floatfindMax(floatx,float