




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机C语言中数组的用法数组是由具有相同类型的数据元素组成的有序集合。数组是由数组名来表示的,数组中的数据由特定的下标来唯一确定。引入数组的目的,是使用一块连续的内存空间存储多个类型相同的数据,以解决一批相关数据的存储问题。数组与普通变量一样,也必须先定义,后使用。数组在C51语言的地位举足轻重,因此深入地了解数组是很有必要的。下面就对数组进行详细的介绍。(1)一维数组一维数组是最简单的数组,用来存放类型相同的数据。数据的存放是线性连续的。用以下例程说明数组的建立、数据操作:#include/*-此程序用以说明数组的建立、数据操作-*/unsigned char array10;/定义一个有10个单元的数组void main()unsigned char i;for(i=0;i<10;i+)arrayi=i; /用下标调用数组中的元素/*-array |9|8|7|6|5|4|3|2|1|0| 90-*/while(1);数组名是用来表示数组的标识,其实它是数组的首地址,即一个指针。不过它所表示的地址是固定的,不能改动。如前几章所述的相关内容,array2与*(array+2)是等效的,不过不能用array+,因为array是常量。上面的程序中的数组是静态建立的,以下例程来用说明数组的动态建立。#include#include/*-此程序用以说明数组的动态建立-*/unsigned char *parray;void main()unsigned char i;parray=(unsigned char *)malloc(10); /动态创建一个数组for(i=0;i<10;i+)parrayi=i; /向数组中赋值free(parray); /释放数组while(1);字符串是数组的一个重要特例。它的每个单元的数据均为字符类型(char),最后一个单元为(0x00),用来表示字符串的结束。C51函数库中提供了专门对字符串进行处理的函数,用以下例程说明:#include#include/*-此程序用以说明字符串-*/char s=y,a,h,o,o,;/定义一个字符串,并对它进行初始化,以结束void main()char s_temp10;strcpy(s_temp,s);/strcpy位于string.h头文件中,实现字符拷贝/s为一个常量,不能s+strcpy(s_temp,"yahoo");/与上面的语句等效while(1);以下列出几种字符串的灵活用法,希望能够帮助读者深入了解字符串:#include#include/*-此程序用以说明字符串的灵活运用-*/*-此函数从字符串s中提取第n个子串,子串间由,分隔返回指向该子串的指针-*/char *get_sub_string(char *s,unsigned char n)int i;int d=0;int fore=0;int len=strlen(s);for(i=0;iif(si=,)si=;d+;if(d=n)return s+fore;elsefore=i+1;return NULL;void main()unsigned char c;char string20;c="yahoo"2; /c=h/*正如前面所述,字符串是由字符串的首地址来表示的,字符串"yahoo"其实就是它的首地址,那就可以这样来取其中的某个字符:"yahoo"2*/strcpy(string,"123,234,345,456");strcpy(string,get_sub_string(string,2);while(1);(2)二维数组可由两个下标确定元素的数组就称为二维数组。其定义的一般形式为:类型说明符 数组名常量表达式1常量表达式2例如:int array64;定义了一个二维数组array,有6行4列,共24个元素。两个方括号中的常量表达1与常量表达式2规定了数组的行数与列数,从而确定了数组中的元素个数。行下标从0开始,最大为5,共6行;列下标也从0开始,最大为3,共4列。数组中共有6X4=24个元素,具体如下表示:array00array01array02array03array10array11array12array13array20array21array22array23array30array31array32array33array40array41array42array43array50array51array52array53实际使用时,可以把上述二维数组看作一个6行4列的矩阵,是一个平面的二维结构。那么编译程序是如何用一维的存储空间给这样一个二维结构分配连续的存储单元的呢C51采用按行存放的方法,即在内存中先存放第0行元素,再存放第1行、第2行、.元素,每行中先存放第0列,接着存放第1列、第2列、.的元素。#include#include/*-此程序用以说明二维数组的使用方法-*/void main()unsigned char arrays33=1,2,3,2,3,4,3,4,5;/定义一个3行3列的二维数组,其它在内存中还是以一维的方式存储的/用下面的方式就可以知道这一点unsigned char test;test=(unsigned char *)arrays)6;/test=3;/将二维数据的首地址强制转为一维数组,按照一维数组的方式访问它while(1);除了一维数组、二维数组,其实可以定义任何维的数组,多维数组用来表示由多个下标才能决定的量。例如:int arrays333表示数组arrays为一个三维数组,对应于三维存储模型。其实单片机内的存储器是一维的,即所有数据都是依次顺序存储的,所以无论几维数组都由编译程序抽象出数组到单片机存储的实际的一维数组映射。#include/*-此程序用以说明三维数组-*/void main()unsigned char test;unsigned char arrays222=1,2,2,3,3,4,4,5;test=arrays110;/test=4test=(unsigned char *)arrays)7; /test=5while(1);(3)结构数组多个结构变量也可以构成结构数组,其定义方法与定义结构变量完全相同。如下例:#include/*-此程序用以说明结构数组-*/type
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿山开采劳务合作与地质资源调查及环境保护合同
- 离婚房产分割与权益调整执行合同范本
- 离婚协议书子女抚养权及共同财产分割范本
- 物业品质经理培训
- 酿酒技术面试题目及答案
- 鼻饲管置管技术的试题及答案
- 辅警政治培训课件模板
- 辅警培训理论知识考核课件
- 交通银行2025佳木斯市秋招英文面试题库及高分回答
- 农业银行2025鄂州市秋招群面模拟题及高分话术
- 2025年时事政治考试100题及答案
- 农业产业强镇建设资金申请项目可行性研究及风险评估报告
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 2025年学校意识形态工作要点
- 领导科学概论课件
- 煤矿安全规程(防治水)课件
- 疥疮防与治课件
- 人教版七年级上册英语教学课件:Starter Unit 1 1a-2e(共32张PPT)
- 地下车库系统环氧地坪施工组织设计
- GB 37300-2018 公共安全重点区域视频图像信息采集规范
- YY∕T 0953-2020 医用羧甲基壳聚糖(高清正版)
评论
0/150
提交评论