资源描述:
《C语言课程变量的作用域和生存周期、递归ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、重庆邮电大学计算机科学与技术学院变量的作用域和生存周期2021/9/161函数的定义和函数的调用函数定义格式:返回值类型函数名(类型参数1,类型参数2,…){函数体return表达式;}函数调用格式:函数名(参数1,参数2,…);函数定义的语法远比函数调用的要严格很多2021/9/16函数原型函数和变量一样,要先定义后使用如果函数调用出现在函数定义之前,必须使用函数原型说明该函数有几个参数,参数的类型,和返回值的类型,才能保证编译器正常完成工作示例doubleadd(double,double);intmain(){……add(a,b);return0;}doubleadd(dou
2、blex,doubley){……}2021/9/16对函数接口加以注释说明/*函数功能:实现××××功能函数参数:参数1,表示×××××参数2,表示×××××函数返回值:×××××*/返回值类型函数名(参数表){函数体return表达式;}2021/9/16主要内容变量的作用域和生存周期函数的嵌套调用和模块化原则函数的递归调用2021/9/16重点&难点变量的作用域和生存周期重点、难点模块化原则重点、难点需要实践和经验函数的递归调用难点2021/9/16变量的作用域#includeintmain(){inta=1;{inta=2;printf("IntheINNE
3、Rblock,a=%d",a);}printf("IntheOUTERblock,a=%d",a)return0;}语句块(Block)2021/9/16#includeintmain(){inta;{intb;{intc;a=0;b=0;c=0;d=0;}a=0;b=0;c=0;d=0;}{intd;a=0;b=0;c=0;d=0;}a=0;b=0;c=0;d=0;return0;}2021/9/16#includeintmain(){inta=3,b=5,temp;printf("beforeswap,a=%d,b=%d",a,b);
4、temp=a;a=b;b=temp;printf("afterswap,a=%d,b=%d",a,b);return0;}比较两程序2021/9/16#includevoidswap(inta,intb){inttemp;temp=a;a=b;b=temp;}intmain(){inta=3,b=5,temp;printf("beforeswap,a=%d,b=%d",a,b);swap(a,b);printf("afterswap,a=%d,b=%d",a,b);return0;}swap(a,b)main()swap()5b3a5x3yt535……2021/9
5、/16说明被大括号括起来的区域,叫做语句块(Block)函数体、循环体、分支结构都可以看作语句块变量的作用域规则是:每个变量仅在定义它的语句块内(包含下级语句块)内有效,并拥有自己的内存空间同一语句块内不可以定义同名变量,不同语句块内可以定义同名变量变量的作用是表征变量的作用范围,属于空间概念按照变量的作用域,变量可以分为全局变量和局部变量2021/9/16#includeinta=3,b=5;//定义全局变量voidswap(){inttemp;temp=a;a=b;b=temp;}intmain(){printf("beforeswap,a=%d,b=%d",
6、a,b);swap(a,b);printf("afterswap,a=%d,b=%d",a,b);return0;}2021/9/16#includeexterninta,b;voidswap(){inttemp;temp=a;a=b;b=temp;}intmain(){printf("beforeswap,a=%d,b=%d",a,b);swap(a,b);printf("afterswap,a=%d,b=%d",a,b);return0;}inta=3,b=5;//定义全局变量2021/9/16局部变量局部变量在语句块内定义的变量形参也是局部变量特点进入语句块
7、时获得内存,仅能由语句块内语句访问,退出语句块时释放内存,不再有效定义时不会自动初始化,除非程序员指定初值并列语句块各自定义的同名变量互不干扰2021/9/16全局变量全局变量在所有函数之外定义的变量特点在程序中从定义它的位置以后都有效在定义点之前或在其他文件中引用,应该进行如下声明:extern类型名变量名;从程序运行起即占据内存,程序运行过程中可随时访问,程序退出时释放内存使函数之间的数据交换更容易,也更高效但是并不推荐使用,尽量少用因为谁都可以改写全局变量,所以