单片机如何正确matlab定义一维数组组

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
单片机原理及应用期末复习题库
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口 上传我的文档
 下载
 收藏
粉丝量:143
JAVA工程师,擅长软件开发,软件测试等。
 下载此文档
单片机题库分章节答案(C语言)
下载积分:1000
内容提示:单片机题库分章节答案(C语言)
文档格式:DOC|
浏览次数:120|
上传日期: 22:21:00|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
单片机题库分章节答案(C语言)
关注微信公众号 上传我的文档
 下载
 收藏
粉丝量:24
该文档贡献者很忙,什么也没留下。
 下载此文档
单片机总复习
下载积分:2000
内容提示:单片机总复习
文档格式:DOCX|
浏览次数:30|
上传日期: 00:03:15|
文档星级:
全文阅读已结束,如果下载本文需要使用
 2000 积分
下载此文档
该用户还上传了这些文档
单片机总复习
关注微信公众号AI芯片之于人工智能的意义,则可以理解为发动机之于汽车……
又是一年六一儿童节,虽然,早就超了过这个节日的年纪,……
漫威电影拍了这么多集不但丝毫不油腻,还越来越受欢迎,……
高度集成是目前MCU发展趋势,为了节省整体PCB空间,降低……
施耐德电气展示了针对电力设备、机器设备、汽车、石油化……
演讲人:曾伟权时间: 10:00:00
演讲人:黄科涛时间: 10:00:00
演讲人:Tracy Ma时间: 10:00:00
预算:¥300000预算:¥50000
江苏省湖北省
单片机C语言中数组的用法
[导读]数组是由具有相同类型的数据元素组成的有序集合。数组是由数组名来表示的,数组中的数据由特定的下标来唯一确定。引入数组的目的,是使用一块连续的内存空间存储多个类型相同的数据,以解决一批相关数据的存储问题。
数组是由具有相同类型的数据元素组成的有序集合。数组是由数组名来表示的,数组中的数据由特定的下标来唯一确定。引入数组的目的,是使用一块连续的内存空间存储多个类型相同的数据,以解决一批相关数据的存储问题。数组与普通变量一样,也必须先定义,后使用。数组在C51语言的地位举足轻重,因此深入地了解数组是很有必要的。下面就对数组进行详细的介绍。本文引用地址:
(1)一维数组
一维数组是最简单的数组,用来存放类型相同的数据。数据的存放是线性连续的。
用以下例程说明数组的建立、数据操作:
-----------------------------------------------------
此程序用以说明数组的建立、数据操作
-----------------------------------------------------
unsigned char array[10];//定义一个有10个单元的数组
void main()
for(i=0;i&10;i++)
array[i]=i; //用下标调用数组中的元素
---------------------------------------
array |9|8|7|6|5|4|3|2|1|0| [9]~[0]
---------------------------------------
数组名是用来表示数组的标识,其实它是数组的首地址,即一个指针。不过它所表示的地址是固定的,不能改动。如前几章所述的相关内容,array[2]与*(array+2)是等效的,不过不能用array++,因为array是常量。
上面的程序中的数组是静态建立的,以下例程来用说明数组的动态建立。
-----------------------------------------------------
此程序用以说明数组的动态建立
-----------------------------------------------------
unsigned char *
void main()
parray=(unsigned char *)malloc(10); //动态创建一个数组
for(i=0;i&10;i++)
parray[i]=i; //向数组中赋值
free(parray); //释放数组
字符串是数组的一个重要特例。它的每个单元的数据均为字符类型(char),最后一个单元为''(0x00),用来表示字符串的结束。C51函数库中提供了专门对字符串进行处理的函数,用以下例程说明:
-----------------------------------------------------
此程序用以说明字符串
-----------------------------------------------------
char s[]={'y','a','h','o','o',''};
//定义一个字符串,并对它进行初始化,以''结束
void main()
char s_temp[10];
strcpy(s_temp,s);//strcpy位于string.h头文件中,实现字符拷贝
//s为一个常量,不能s++
strcpy(s_temp,&yahoo&);//与上面的语句等效
}以下列出几种字符串的灵活用法,希望能够帮助读者深入了解字符串:
-----------------------------------------------------
此程序用以说明字符串的灵活运用
-----------------------------------------------------
-----------------------------------------------------
此函数从字符串s中提取第n个子串,子串间由','分隔
返回指向该子串的指针
-----------------------------------------------------
char *get_sub_string(char *s,unsigned char n)
int d=0;int fore=0;
int len=strlen(s);
if(s[i]==',')
return NULL;
void main()
char string[20];
c=&yahoo&[2]; //c='h'
/*正如前面所述,字符串是由字符串的首地址来表示的,
字符串&yahoo&其实就是它的首地址,那就可以这样来
取其中的某个字符:&yahoo&[2]*/
strcpy(string,&123,234,345,456&);
strcpy(string,get_sub_string(string,2));
(2)二维数组
可由两个下标确定元素的数组就称为二维数组。其定义的一般形式为:
类型说明符&数组名[常量表达式1][常量表达式2]
例如:int array[6][4];
定义了一个二维数组array,有6行4列,共24个元素。
两个方括号中的常量表达1与常量表达式2规定了数组的行数与列数,从而确定了数组中的元素个数。行下标从0开始,最大为5,共6行;列下标也从0开始,最大为3,共4列。数组中共有6X4=24个元素,具体如下表示:
array[0][0]
array[0][1]
array[0][2]
array[0][3]
array[1][0]
array[1][1]
array[1][2]
array[1][3]
array[2][0]
array[2][1]
array[2][2]
array[2][3]
array[3][0]
array[3][1]
array[3][2]
array[3][3]
array[4][0]
array[4][1]
array[4][2]
array[4][3]
array[5][0]
array[5][1]
array[5][2]
array[5][3]
实际使用时,可以把上述二维数组看作一个6行4列的矩阵,是一个平面的二维结构。那么编译程序是如何用一维的存储空间给这样一个二维结构分配连续的存储单元的呢C51采用按行存放的方法,即在内存中先存放第0行元素,再存放第1行、第2行、......元素,每行中先存放第0列,接着存放第1列、第2列、......的元素。
-----------------------------------------------------
此程序用以说明二维数组的使用方法
-----------------------------------------------------
void main()
unsigned char arrays[3][3]={{1,2,3},{2,3,4},{3,4,5}};
//定义一个3行3列的二维数组,其它在内存中还是以一维的方式存储的
//用下面的方式就可以知道这一点
test=((unsigned char *)arrays)[6];//test=3;
//将二维数据的首地址强制转为一维数组,按照一维数组的方式访问它
除了一维数组、二维数组,其实可以定义任何维的数组,多维数组用来表示由多个下标才能决定的量。
例如:int arrays[3][3][3]
表示数组arrays为一个三维数组,对应于三维存储模型。
其实单片机内的存储器是一维的,即所有数据都是依次顺序存储的,所以无论几维数组都由编译程序抽象出数组到单片机存储的实际的一维数组映射。
-----------------------------------------------------
此程序用以说明三维数组
-----------------------------------------------------
void main()
unsigned char arrays[2][2][2]={{{1,2},{2,3}},{{3,4},{4,5}}};
test=arrays[1][1][0];//test=4
test=((unsigned char *)arrays)[7]; //test=5
}(3)结构数组
多个结构变量也可以构成结构数组,其定义方法与定义结构变量完全相同。
-----------------------------------------------------
此程序用以说明结构数组
-----------------------------------------------------
typedef struct
int a,b,c,d;
void main()
Stru stru[10]; //定义结构数组
unsigned char i=0;
for(;i&10;i++)
stru[i].a=i;
stru[i].b=i;
stru[i].c=i;
stru[i].d=i;
这几天来,我(Eric Raymond)在思考那些正在挑战C语言的系统编程语言领袖地位的新潮语言,尤其是Go和Rust。思考的过程中,我意识到了一个让我震惊的事实――我有着35年的C语言经验。每周我都要写很多C代码,但是我已经记不清楚上一次......关键字:
对于搞单片机的特别用8051系列工程师来说,谈到单片机的RTOS,很多时候会问一句:“为什么要用RTOS?单片机就这一点资源,使用RTOS能保证效率吗?”......关键字:
现在想起来,当时的情形还历历在目。当时工作非常艰辛,累得我是满地找牙。记得进厂的第一天,就加班通霄,以后天天晚上加班至12点,早上7点起床。......关键字:
在哈尔滨工程大学五年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备;在这里与众多电子爱好者的交流中,使我学到了更多的专业知识;在学校老师们的教导下,让我学会了如何做一名合格的大学生。......关键字:
我 要 评 论
热门关键词合泰单片机,我想定义一个132个byte的数组该怎样定义_百度知道
合泰单片机,我想定义一个132个byte的数组该怎样定义
我有更好的答案
1、C语言中的字符类型即char类型,一般情况占1个字节,因此一般使用char类型来描述字节数组。比如char&sz_byte[256];2、有时候为了阅读文件,会将char类型说明为BYTE类型。需要借助于typedef关键字。比如typedef&char&BYTE;BYTE&buff[16]&=&{0};
采纳率:41%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 一维数组的定义 的文章

 

随机推荐