TP10 国二考试c语言教程.ppt_第1页
TP10 国二考试c语言教程.ppt_第2页
TP10 国二考试c语言教程.ppt_第3页
TP10 国二考试c语言教程.ppt_第4页
TP10 国二考试c语言教程.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十章,带参数的函数,2,回顾 2-1,函数是程序中的一个相对独立的单元或模块 使用函数带来的好处: 程序更清晰、易维护、分模块方便设计与开发、提高代码的重用性 语言提供了极为丰富的内置函数,要使用这些内置函数,需要在程序前包含相应的头文件 自定义函数是用户在程序中根据需要而编写的函数,3,回顾 2-2,函数的结构包括:返回值类型、函数名、参数列表、函数体 函数原型说明以便向编译器指出该函数使用什么样的格式和语法 函数调用时程序控制流将转向被调函数,被调函数执行结束时,控制流返回主调函数 return 语句用于向调用函数返回值,4,目标,理解变量的作用域 理解变量的存储类型 理解两种参数传递的

2、方式:传值、引用 熟悉带参函数的调用 熟练使用数组作为函数参数,5,变量的作用域 4-1,作用域是某些事物起作用或有效的区域。,限于陆地,限于海洋,限于空中,6,程序中变量也有不同的使用范围,称为变量的作用域。变量的作用域决定变量的可访问性,变量的作用域 4-2,void displayDiscount() float discount_amt; . . . . . . . . . ,局部变量:不能在函数外使用,float discount_amt; void main() . . . . . . void displayDiscount() . . . . . . ,全局变量:可以在整个程序

3、中使用,7,变量的作用域 4-3,#include void addNumbers() int num1,num2,sum; printf(n 请输入两个数:); scanf(%d %d, ,0,45,请输入两个数:56 45,子函数中sum的值是101,主函数中sum的值是 0,56,101,8,变量的作用域 4-4,#include int sum=0; void addNumbers() int num1,num2; printf(n 请输入两个数:); scanf(%d %d, ,0,45,请输入两个数:56 45,子函数中sum的值是101,主函数中sum的值是101,56,101,

4、9,存储类型 2-1,变量的存储方式可分为“静态存储”和“动态存储”两种 静态存储变量是一直存在的,而动态存储变量则时而存在时而消失 这种由于变量存储方式不同而产生的特性称为变量的生存期 生存期表示了变量存在的时间,10,存储类型 2-2,11,静态局部变量,静态局部变量生存期为整个源程序 静态局部变量作用域与自动变量相同,即只能在定义该变量的函数内使用该变量 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值 函数被调用时,其中的静态局部变量的值将保留前次被调用的结果,12,静态局部变量示例,void format() static int m = 0; m+; if (m %

5、 10 = 0) putchar(n); else putchar( ); void main() int i; for(i=0;i50;i+) printf(%d,i); format(); ,0,0,1,1,循环执行50次,49,49,0 1,0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49,2,13,静态全局变量,静态全局变量与普通全局变量在存储方式上完全相同

6、区别在于:非静态全局变量的作用域是整个源程序;而静态全局变量的作用域只是定义它的文件,14,函数形参和实参,void main ( ) . . . . . . display ( 10, 20.5 ); display ( int num, float fraction ) . . . . . . ,实际参数,函数调用,形式参数,15,void main() int a = 0; /初始化a值为0 func(a); /调用函数func printf(%d,a); /输出a的结果 /定义函数func void func(int a) a = 10; /让参数a等于10 ,传值调用,0,传值调用,

7、将会输出什么,16,#include void increment(int,int); void main() int num1,num2; printf(n 请输入两个数: ); scanf( %d %d, ,传值调用示例,请输入两个数 :,34 56,递增前的值是 34 和 56,_,递增后的值是 34 和 56,34,56,子函数中的值是 35 和 57,35,34,56,57,17,void main() int a = 0; /初始化a值为0 func( /让参数a等于10 ,引用调用,FFE0,引用调用,a=FFE0,将会输出什么,18,#include void incremen

8、t(int*, int*); void main() int num1,num2; printf(n 请输入两个数: ); scanf( %d %d, ,引用调用示例,请输入两个数 :,45 67,递增前的值是 45 和 67,_,递增后的值是 46 和 68,45,67,子函数中的值是 46 和 68,46,FF23,FF05,68,FF23,FF05,19,数组作为函数参数,在用数组作实参时,以传址方式调用函数,也就是说把实参数组的首地址赋给形参 实际上形参数组和实参数组为同一数组,共同拥有一段内存空间,20,数组作为参数示例1,问题描述: 通过函数实现5个学员成绩的排序。,#includ

9、e #define N 5 void sort(float); void main() float gradeN; int i; printf(n 输入 %d 个学员的成绩:n,N); for(i=0;iN;i+) scanf(%f, ,传递数组时不使用 “ float temp; for(i=0;i aj+1) temp = aj+1; aj+1 = aj; aj = temp; ,21,问题描述: 通过函数实现求5个数中的最大值。,#include int find_larg(int *); void main() int arr15; int i, larg_num; printf(n

10、请输入 5 个不同的值,存储在一个数组中 n); for (i = 0; i = 4; i+) scanf(%d, ,数组作为参数示例2,演示:示例6,int find_larg(int *ptr) int high = *ptr,i; ptr+; for (i = 1; i =4; i+) if (high *ptr) high = *ptr; ptr+; return high; ,22,总结 2-1,根据变量的作用域可以将变量划分为:局部变量和全局变量 根据变量的存储类型(决定生存期)将变量划分为: 自动变量、寄存器变量、静态变量、外部变量 静态局部变量的生存期为整个源程序,但其作用域为定义该变量的函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论