数组函数指针精选PPT.ppt

上传人:石*** 文档编号:84327448 上传时间:2023-04-04 格式:PPT 页数:25 大小:720KB
返回 下载 相关 举报
数组函数指针精选PPT.ppt_第1页
第1页 / 共25页
数组函数指针精选PPT.ppt_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《数组函数指针精选PPT.ppt》由会员分享,可在线阅读,更多相关《数组函数指针精选PPT.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、关于数组函数指针第1页,讲稿共25张,创作于星期二2一、数组数组:把具有相同数据类型的若干变量按有序的形式组织起来的集合。其中,数组中的单个变量称为数组元素。数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。按照数组元素所属的基本数据类型的不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。在C51语言中,数组可以是一维的,也可以是多维的。第2页,讲稿共25张,创作于星期二3数组元素的表示:数组元素是组成数组的基本单元。在C51语言中,数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的

2、一般形式为:数组名下标 这里的下标只能为整型常量或整型表达式。例如,a6、ai+j、ai+都是合法的数组元素。数组元素通常也称为下标变量。在C51语言中必须先定义数组,才能使用下标变量。另外,程序中只能逐个地使用下标变量,而不能一次引用整个数组。第3页,讲稿共25张,创作于星期二4数组元素的初始化赋值是指在数组声明的时候给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少程序运行时间,提高效率。数组元素初始化赋值的一般形式为:类型说明符 数组名常量表达式=值,值值;在 中的各数据值即为各元素的初值,各值之间用逗号间隔。示例如下:int a10=0,1,2,3,4,5,6,7,8,9;该

3、语句相当于赋值语句a0=0,a1=1,a9=9。第4页,讲稿共25张,创作于星期二51.一维数组一维数组的定义格式为:数据类型说明符 存储器类型 数组名 常量表达式;其中,数据类型说明数组中各元素的数据类型;存储器类型是可选项,它指出定义的数组所在的存储空间;数组名是整个数组的变量名;常量表达式说明了该数组的长度,即数组中元素的个数,常量表达式必须用方括号“”括起来,而且其中不能含有变量。例如:char math 60;/定义math数组为字符型,数组元素个数为60个。int count10;/声明整型数组count,共10个元素。第5页,讲稿共25张,创作于星期二6在C51语言中,一维数组的

4、一般说明形式如下:类型说明符 数组名常量表达式;如果,在声明数组时就给数组进行初始化赋值,可以采用如下的形式:类型说明符 数组名常量表达式=值,值,值;一维数组声明示例如下:int a4=1,2,3,4;/数组元素中的对应关系图第6页,讲稿共25张,创作于星期二7字符数组:在C51语言中,字符串被定义为一个以空字符结束的字符数组。其中空字符以“0”来标识,它一般是不显示的。因此,在程序中声明字符数组时,必须声明一个比要存的字符串多一个字符的数组,最后一位用来存空字符“0”。例如,假如要定义一个存放长度为20的字符串的数组s,可以写成:char s21;这样就给字符串末尾的空字符保留了空间。ch

5、ar a=“ZhongGuo”;char a9=“ZhongGuo”;第7页,讲稿共25张,创作于星期二82.二维数组定义多维数组时,只要在数组名后面增加相应于维数的常量表达式即可。二维数组的定义格式为:数据类型 存储器类型 数组名 常量表达式1 常量表达式2;例:int ch1020;该语句声明ch为(10,20)的二维整型数组,其有10行20列,共200个元素。和其他大多数计算机语言不同的是,C51不使用逗号区分下标,而是用方括号将各维下标括起。另外,数组的二维下标均从0计算。例如,要存取数组ch中下标为(3,5)的元素可以写成:ch35第8页,讲稿共25张,创作于星期二9二维数组的初始化

6、可以有如下三种方式:1初始化方法1 逐行给出数组元素值,示例如下:int sum25=5,4,3,2,1,-6,-4,6,3,0;2初始化方法2 按顺序逐个给出数组元素,示例如下:int sum25=5,4,3,2,1,-6,-4,6,3,0;3初始化方法3 二维数组也可以进行局部初始化,示例如下:int num44=1,2,3,4,-2,0,-1,3,7,10,-9,6;第9页,讲稿共25张,创作于星期二10二维字符串数组它是二维数组的特殊形式,其元素值为字符。二维字符串数组的定义形式如下:char 数组名常量表达式1常量表达式2;其中,左下标决定字符串的个数,右下标说明字符串的最大长度。二

7、维字符串数组的声明示例如下:char str380;该语句声明了一个二维字符串数组,可存放3个字符串,单个字符串的最大长度为80个字符。第10页,讲稿共25张,创作于星期二11例:数组赋值,观察存储空间#include reg52.hvoid main()unsigned char a6=0,1,2,3,4,5,b6;int d34=1,2,3,4,5,6,7,8,9,10,11,12,k34;char ch=abcdABCD;unsigned char i,j;for(i=0;i6;i+)bi=ai;/一维数组赋值 for(i=0;i3;i+)for(j=0;j4;j+)kij=dij;/二

8、维数组赋值 while(1);/暂停 第11页,讲稿共25张,创作于星期二12二、指针二、指针在C51程序中,访问或修改变量可以通过两种方式来实现。一种是直接访问或修改这块区域的内容来实现的;另一种是先求出变量的地址,然后再通过地址对该变量的值进行访问,这就是本节所要讲解的指针及指针变量。第12页,讲稿共25张,创作于星期二131.地址、指针和指针变量的概念地址:是单片机内存单元的编号。通常一个字节称为一个内存单元。指针:实际上也是一个地址,其表示的是一个变量在内存中的首地址。不同的数据类型所占用的内存单元数和它的大小有关。在C51语言中,根据数据类型或数据结构的不同,一个变量往往都占有一组连

9、续的内存单元,单用“地址”这个概念并不能很好地描述这个变量,从而引进了“指针变量”的概念。指针变量是指向一个数据结构的首地址,因而概念更明确,寻址更方便。第13页,讲稿共25张,创作于星期二142.指针变量的声明指针变量的声明与一般变量的声明相似,声明指针变量的一般形式为:类型标识符 *指针名1,*指针名2,;其中前面的“类型标识符”表示该指针变量所指向的变量的类型,即指针变量的类型。典型的指针变量的声明示例如下:int *p1;/p1是指向整型变量的指针变量char *p2;/p2是指向字符变量的指针变量float *p3;/p3是指向浮点变量的指针变量第14页,讲稿共25张,创作于星期二1

10、53.指针变量的赋值指针变量被声明后可以指向任何同类型的变量。如果定义指针变量时不进行初始化,编译系统不能确定它具体的指向,此时该指针变量被初始化为NULL,它的值为0。这里需要强调的是,未经赋值的指针变量不能在程序中使用,否则将由指针指向错误导致整个程序的混乱。另外,指针变量的赋值只能赋予地址,决不能赋予任何其他数据,否则将引起错误。在C51语言中,不知道变量的具体地址,变量的首地址是由编译系统分配的。为此,C51语言中提供了地址运算符“&”,可以获取变量的首地址。其一般形式如下:&变量名第15页,讲稿共25张,创作于星期二16假设有指向整型变量的指针变量p和整型变量a,如要把整型变量a的地

11、址赋予p,(1)可以采用初始化赋值,示例如下:int a;int *p=&a;/初始化赋值,&a表示取变量a的首地址(2)也可以采用取地址赋值,示例如下:int a;int *p;p=&a;/利用&a获得变量a的首地址,然后赋值给p第16页,讲稿共25张,创作于星期二17把一个指针变量的值直接赋予相同类型变量的另一个指针变量。示例如下:int a=5,b=6;/定义变量和初始化int*p1=&a,*p2=&b;/定义指针变量和初始化p2=p1;/把a的地址赋予指针变量p2*p2=*p1;/把p1指向的内容赋给p2所指的区域例:观察指针变量的类型改变和引用第17页,讲稿共25张,创作于星期二18

12、三、三、函数函数C51语言中也引入了函数的概念。C51程序中的函数数目是不受限制的,但是,一个典型的单片机程序都必须包含且只能包含一个主函数,即main函数,它是整个程序的入口,整个程序从这个主函数开始执行。C51语言允许用户使用一些编译环境自带的库函数,合理使用库函数可以大大简化程序设计过程。同时,为了有利于程序的模块化,促进程序资源的共享。C51也支持用户使用自定义函数。18第18页,讲稿共25张,创作于星期二19函数是能够实现特定功能的代码段。一个C51程序通常由一个主函数和若干个函数构成。其中,主函数即main()函数。C51程序的执行总是从main函数开始,完成对其他函数的调用后再返

13、回到主函数,最后由main函数结束整个程序。一个C51源程序必须有,且只能有一个主函数main()。除了主函数外,C51还提供了极为丰富的库函数,而且还允许用户自定义函数。在C51程序中,由主函数调用其他函数,其他函数之间也可以相互调用。同一个函数可以被一个或多个函数调用任意次。在使用C51函数时,需要注意如下几点:C51的源程序的函数数目是不限的。在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。函数之间允许相互调用,也允许“嵌套调用”。函数还可以自己调用自己,称为“递归调用”。main()函数是主函数,它可以调用其他函数,而不允许被其他函数调用。第19页,讲稿共25张,创作于星期

14、二20库函数与自定义函数库函数是针对一些经常使用的算法,经前人开发、归纳、整理形成的通用功能子函数。Keil C51内部有数百个库函数,可供用户调用,调用Keil C51的库函数时只需要包含具有该函数说明的相应的头文件即可,如#include。当使用不同类型的单片机时,可包含其相应的头文件。第20页,讲稿共25张,创作于星期二21在C51语言中,函数定义的一般一般形式如下:类型说明符 函数名(形式参数列表)形参类型说明语句return语句其中:(1)“类型说明符”声明了函数返回值的类型,该返回值可以是任何有效类型。如果函数没有返回值,则可以采用void说明符。函数类型的说明必须处于对它的首次调

15、用之前,这样C51程序编译时才能为返回非整型值的函数生成正确代码。(2)“形式参数列表”是一个用逗号分隔的参数变量表。当函数被调用时,这些变量接收调用参数的值。(3)“return语句”用于返回函数执行的结果,如果没有返回值,则可以省略该语句。第21页,讲稿共25张,创作于星期二22函数的调用函数名(实参列表)其中,函数名即被调用的函数,实参列表是主调函数传递给被调函数的数据。通常,函数可以有以下3种调用方式。(1)函数语句:把函数作为一个语句,主要用于无返回值的函数。示例如下:delay();(2)函数表达式:函数出现在表达式中,主要用于有返回值的函数,将返回值赋值给变量。示例如下:c=mi

16、n(x,y);/函数min求x、y中的最小值(3)函数参数:函数作为另一个函数的实参,主要用于函数的嵌套调用。示例如下:c=min(x,min(y,z);/函数min求x、y、z中的最小值第22页,讲稿共25张,创作于星期二23先声明,后调用1.自定义功能子函数位于主函数前面2.自定义功能子函数位于主函数后面需要用声明语句声明子函数#include void delay(void);/*声明子函数*/void light1(void);/*声明子函数*/第23页,讲稿共25张,创作于星期二24函数的连接当程序中子函数与主函数不在同一个程序文件时,要通过连接的方法实现的有效的调用。一般有两种方法,即外部声明与文件包含。(1)外部声明extern void delay(void);/*声明该函数在其它文件中*/extern void light1(void);/*声明该函数在其它文件中*/(2)文件包含#include 第24页,讲稿共25张,创作于星期二2023/4/3感谢大家观看第25页,讲稿共25张,创作于星期二

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁