版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、函数(函数(2) 数组作为函数参数 外部变量和局部变量 变量的存储类型2实参为数组元素#include stdio.hmain()int a3,i,m; int max(int,int); printf(Please input 3 int:n); for(i=0;ib?a:b);1、数组元素作为函数实际参数 数组元素和简单变量具有相同的特性,因此可以作为函数的实参来出现。(L4_4_0)形参为整形32、数组名作为函数参数 有一个一唯数组score,内放10个学生的分数,求平均成绩。(L4_4_1)形参形参实参实参#define N 10main()float scoreN,avg; floa
2、t average(float arrN); int i; printf(Please input %d score:n,N); for(i=0;iN;i+)scanf(%f,&scorei); avg=average(score); printf(Average score is %7.2fn,avg);float average(float arrN)int i; float sum=0.0,aver; for(i=0;iN;i+) sum=sum+arri; aver=sum/N; return(aver);形参和实参都用数组名5数组名作为函数参数 实参数组和形参数组类型应保持一
3、致。 在被调用函数中声明的数组大小是不起任何作用的。因为C编译系统对形参数组大小不作检查,形参数组名只代表一个形参数组名只代表一个地址,地址,在调用时将实参数组的首地址传到形参数组名,也就是说,形参数组并形参数组并不在内存中重新申请数组的空间,而是不在内存中重新申请数组的空间,而是和实参数组共占存储单元。和实参数组共占存储单元。根据需要另设一个参数传递需要处理的数组元素的个数数组元素要参加处理的实际个数#define N 10main()float scoreN,avg; float average(float arrN); int i; printf(Please input %d scor
4、e:n,5); for(i=0;i5;i+)scanf(%f,&scorei); avg=average(score,5); printf(Average score is %7.2fn,avg);float average(float arr,int n)int i; float sum=0.0,aver; for(i=0;in;i+) sum=sum+arri; aver=sum/n; return(aver);73、多维数组名作为数组参数 多维数组元素也可以作为数组的参数 多维数组名作为数组的参数,在被调用函数中对形参数组进行定义时可以指定每一维的大小,也可以省略第一维的大小说明
5、。(不能省略第二维)实参为数组名形参定义二维数组的维数及每一维的大小,可以缺省第一维的大小#include stdio.hmain()int a33=1,1,1,1,1,1,1,1,1; int s(int aa3); clrscr(); printf(sum=%dn,s(a);int s(int a3)int sum=0; int i,j; for(i=0;i3;i+)for(j=0;jb?a:b; return c;main()int a=7,b=10; fun(a,b); printf(max=%dn,c);int c;c=fun(a,b);11在函数fun()中,虽然没有定义变量a,b
6、,但由于它们定义在程序的最前面,是全程变量,凡是在定义该变量的后面定义的函数均可以引用它们。外部变量和局部变量#include “stdio.h”int a=3, b=5; /*在函数体外定义的变量*/Main( ) void fun( ); printf(“ a= %d , b=%d n ” , a, b); fun ( ); printf(“ a= %d , b=%d n ” , a, b);void fun (void) int c ; c=a; a=b; b=c; 例L4_7.c 交换两个变量的值12外部变量和局部变量 2、用extern声明外部变量,用以扩充外部变量的作用域。(1)在
7、一个文件内声明外部变量:如:L4_7_0 main( ) void gx( ) int x, y; void gy( ) 还可用它在不同的程序中使用,如 在file1.c 中引用 file2.c中定义的变量x, y。extern int x, y;x,y原作用域 x,y新的作用域13变量的存储属性 变量的存储类型有:register型:寄存器类型auto 型:自动型(缺省的都是auto型)static 型:静态型一、自动变量 auto 数据类型 变量名=初值表达式 , ;不作特殊说明的变量都是自动变量不作特殊说明的变量都是自动变量。它用之则建、用完即撤,仅在函数体内或复合语句内建立和有效,存储
8、在内存的动态数据区中。例L4_5.c程序一进入main()函数,变量x就被创建,当程序运行到此局部范围内(即花括号内)时创建,用完即撤消,即释放变量。当程序运行到函数prt()内部时,变量x才被创建,离开函数时,就被撤消main( )int x=1; clrscr(); void prt(void); int x=3; prt( ); printf(x=%dn,x); printf(%dn,x);void prt(void) int x=5; printf(%dn,x);总之,总之,auto变量是局部变量,变量是局部变量,在赋值之前,其值是不确定的,因而,对同一函数的多次调用,值不保留,因为存
9、储单元被释放过。15Register变量二、register变量(寄存器变量)与auto变量完全相同,只是速度快,存储在CPU的寄存器中。#include “stdio.h”void m_table(void) register int i, j; for (i=1 ; i=9 ; i+) for (j=1 ; j=i ; j+) printf(“%d * %d =%d ”, j, i, j*i); putchar ( I=j)? n : t ); Main() void m_table( ); m_table( );16Static变量三、static 变量(静态变量)auto变量是在程序运
10、行过程中建立的,是动态建立、动态撤消。而静态变量是在程序一开始就建立的,不撤消静态变量是在程序一开始就建立的,不撤消直到程序结束。因而其值具有可继承性,直到程序结束。因而其值具有可继承性,但它只能在本程序内使用。结果为:1, 2, 3一般需要保留函数上一次的调用结果时,就定义成静态变量。Void incr(void) static int x=0; x+; printf(“%d n ” , x );例L4_6_1.cmain( ) void incr(void); incr( ); incr( ); incr( );17上一次的结果,即n-1的阶乘对静态局部变量赋初值时在编译时进行的,也就是整
11、个程序的运行过程中,它已经有初值,以后每次调用函数时不再重新赋初值而保留了上一次的运行结果。Static变量 例4_7.c:打印1到5的阶乘值int fac(int n)static int f=1; f=f*n; return(f);main()int i; for(i=1;i=5;i+)printf(%d!=%dn,i,fac(i);18#include stdio.hint x,y;one()int a,b; a=25,b=10; x=a-b; y=a+b; return;main()int a,b; a=9,b=5; x=a+b; y=a-b; one(); printf(%d,%dn,x,y);#include stdio.hint x,y;two()int a=25,b=10; int x,y; a=25,b=10; x=a-b; y=a+b; return;main()int a=9,b=5; x=a+b;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年合肥市医疗器械检验检测中心有限公司社会招聘18人考前自测高频考点模拟试题附答案
- 2025年南昌市第一医院编外专技人才自主招聘1人参考题库附答案
- 2025年盘锦市中心医院公开招聘事业编制及劳动合同制工作人员76人(公共基础知识)测试题附答案
- 2025年海南省血液中心公开招聘事业编制人员8人备考题库附答案
- 2025年山东日照力诚人力资源有限公司招聘外包服务人员6人公考前自测高频考点模拟试题附答案
- 2025年广东阳江市招聘事业单位高层次(急需紧缺)人才32人(公共基础知识)综合能力测试题附答案
- 2026中央办公厅所属事业单招聘工作人员13人笔试备考题库及答案解析
- 2026重庆九龙坡区田坝小学校招聘2人笔试参考题库及答案解析
- 2026北京市海淀区翠微小学招聘1人笔试备考试题及答案解析
- 2026浙江大学社会学系诚聘海内外英才笔试参考题库及答案解析
- 斜弱视眼科学
- 电商平台需求规格说明书-通用版本
- GB/T 3372-2010拖拉机和农业、林业机械用轮辋系列
- 北京城市旅游故宫红色中国风PPT模板
- 经济学原理 第一章课件
- 安川伺服说明书
- 社会组织管理概论全套ppt课件(完整版)
- 酒精度检测原始记录
- 冷渣机检修工艺
- 建筑风水学培训
- SAP成本月结操作及标准成本估算
评论
0/150
提交评论