认识单片机数组的概念

这篇具有很好参考价值的文章主要介绍了认识单片机数组的概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数组的概念

在程序设计中,为了处理方便,把具有相同类型的若干数据项按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。组成数组的各个数据分项称为数组元素。数组属于常用的数据类型,数组中的元素有固定数目和相同类型,数组元素的数据类型就是该数组的数据类型。例如,整型数据的有序集合称为整型数组,字符型数据的有序集合称为字符数组。
数组还分为一维、二维、三维和多维数组等,常用的是一维、二维和字符数组。

认识单片机数组的概念,单片机,嵌入式硬件

 一堆数组

在 C 语言中,数组必须先定义、后使用。一维数组的定义格式如下:

类型说明符 数组名[常量表达式];

类型说明符是指数组中的各个数组元素的数据类型;数组名是用户定义的数组标识符;方括号中的常量表达式表示数组元素的个数,也称为数组的长度。

定义数组时,应注意以下几点:

(1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,所有元素的数据
类型都是相同的。

(2) 数组名的书写规则应符合标识符的书写规定。

(3)数组名不能与其他变量名相同。

(4)方括号中常量表达式表示数组元素的个数,如a[5]表示数组 a 有 5个元素。数组元素的下标从0开始计算,5 个元素分别为 a[0]、a[1]、a[2]、a[3]、a[4]。
(5) 方括号中的常量表达式不可以是变量,但可以是符号常数或常量表达式。

(6) 允许在同一个类型说明中,说明多个数组和多个变量。

数组元素

数组元素也是一种变量,其标志方法为数组名后跟一个下标。下标表示该数组元素在数组中的顺序号,只能为整型常量或整型表达式。

如为小数时,C 编译器将自动取整。定义数组元素的一般形式为:数组名[下标]

在程序中不能一次引用整个数组,只能逐个使用数组元素。例如,数组 a 包括 10 个数组元素,累加 10 个数组元素之和,必须使用下面的循环语句逐个累加各数组元素:

int a[10],sum,i;
sum=0;
for(i=0;i<10;i++) sum=sum+a[i];

不能用一个语句累加整个数组,下面的写法是错误的:

sum=sum+a;

数组赋值

给数组赋值的方法有赋值语句和初始化赋值两种
在程序执行过程中,可以用赋值语句对数组元素逐个赋值,例如:

for(i=0;i<10;i++)
num[i]=i;

数组初始化赋值是指在数组定义时给数组元素赋予初值,这种赋值方法是在编译阶段进行的,可以减少程序运行时间,提高程序执行效率。初始化赋值的一般形式为:
类型说明符 数组名[常量表达式]=(值,值,...,值);

其中在|中的各数据值即为相应数组元素的初值,各值之间用逗号间隔,例如:int num[10]=(0,1,2,3,4,5,6,7,8,9 );

相当于:
num[0]=0;num[1]=;·;num[9]=9;在简易密码锁程序ex4_2c中对数组 tab的说明也可以修改如下:
unsigned char code tab[]=(0xc0,0xf9,0xa4,0xb0,0xbf,0x8b,0x8c);
这里没有指定数组的元素个数,在小中说明的各数据值的个数就是数组中的元素个数因此数组 tab 的元素个数是7个。

二维数组

定义二维数组的一般形式是:
类型说明符 数组名[常量表达式][常量表达式2];其中“常量表达式1”表示第一维下标的长度,“常量表达式 2”表示第二维下标的长度,例如:
int num[3][4];说明了一个3行4列的数组,数组名为 num,该数组共包括 3x4 个数组元素,即:
num[0][0],num[0][1],num[0][2],num[0][3]num[1][0],num[1][1],num[1][2],num[1][3]num[2][0],num[2][1],num[2][2],num[2][3]
二维数组的存放方式是按行排列,放完一行后顺次放入第二行。对于上面定义的二维数组,先存放num[0]行,再存放num[1]行,最后存放num[2]行;每行中的4个元素也是依次存放的。由于数组 num 说明为 int 类型,该类型数据占2字节的内存空间,所以每个元素均占有2字节。
二维数组的初始化赋值可按行分段赋值,也可按行连续赋值。
例如,对数组 a[3][4]可按下列方式进行赋值。
(1) 按行分段赋值可写为:
int a[3][4]=((80,75,92,61),(65,71,59,63),(70,85,87,90));(2) 按行连续赋值可写为:
int a[3][41=(80,75,92,61,65,71,59,63,70,85,87,90);以上两种赋初值的结果是完全相同的。
二维数组的应用参见任务4-2中的ex4_5.c及任务4-3中的ex4_8.c。

字符数组

用来存放字符量的数组称为字符数组,每一个数组元素就是一个字符。
字符数组的使用说明与整型数组相同,例如“char h[10];”语句,说明 ch 为字符数组;包含 10 个字符元素。字符数组的初始化赋值是直接将各字符赋给数组中的各个元素。例如:
char ch[10]=('c',h',i''n',e','s',e',0);
以上定义说明了一个包含 10 个数组元素的字符数组 h,并且将 8 个字符分别赋值到ch[0]~ch[7],而 ch[8]和 ch[9]系统将自动赋予空格字符。当对全体数组元素赋初值时也可以省去长度说明,例如:
char ch[]=('c',h',i','n',e',s',e' 0');
这时 ch 数组的长度自动定义为 8。通常用字符数组来存放一个字符串,字符串总是以,\O'来作为串的结束符。因此当把一个字符串存人一个数组时,也要把结束符,\0存人数组,并以此作为字符串的结束标志。
C 语言允许用字符串的方式对数组做初始化赋值,例如:
char ch[]={'c',h',i',n','e',s',e','\0};
可写为:
char ch[]={"chinese"};

或去掉 },写为:可名char ch[]="chinese";个字符串可以用一维数组来装入,但数组的元素数目一定要比字符多一个,即字符串结束符·\0',由C编译器自动加上。
 文章来源地址https://www.toymoban.com/news/detail-781029.html

到了这里,关于认识单片机数组的概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式(二)单片机基础 | 单片机特点 内部结构 最小系统 电源 晶振 复位

    上一篇文章我们介绍了嵌入式系统 嵌入式系统(Embedded System)是一种特定用途的计算机系统,它通常嵌入在更大的产品或系统中,用于控制、监测或执行特定的任务。这些系统通常由硬件和软件组成,旨在满足特定的需求,如嵌入在家电、汽车、医疗设备、工业自动化、消费

    2024年02月02日
    浏览(108)
  • 单片机(嵌入式)程序分层架构

    目录 前言 嵌入式3层软件架构 嵌入式4层软件架构-1 驱动层 操作系统层 中间件层 应用层 嵌入式4层软件架构-2 硬件层 嵌入式微处理芯片 嵌入式存储器系统 嵌入式I/O接口 中间层 系统软件层 RTOS 文件系统 GUI 应用层 嵌入式5层软件架构1 嵌入式5层软件架构2 嵌入式6层软件架构

    2023年04月19日
    浏览(80)
  • 单片机和Linux嵌入式区别

    单片机是一种集成电路,它能够在一个芯片上完成各种计算、控制和管理任务。单片机没有明确的分层,这是因为它通常被用来设计嵌入式系统,其程序结构和功能要根据具体的应用需求来设计。 在单片机的程序设计中,可以通过一些方法将程序分为不同的层次,比如可以将

    2024年01月17日
    浏览(64)
  • 【单片机/嵌入式】最完整学习路线

            关于这个问题我在网上寻找到 了 相关文章解释得很详细,不了解的同学可以参考一下这篇文章: 到底什么是嵌入式?什么是单片机? - 知乎         一个人学习是孤独的,如果你是一名学生,建议加入学校的电子社团或者实验室,有老师的帮助和同学的互助

    2024年02月03日
    浏览(54)
  • 嵌入式51单片机04-矩阵按键系列

    一、矩阵按键基础知识 矩阵按键工作原理 : 逐行扫描 :通过高四位轮流输出低电平来对矩阵键盘进行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过判断低四位数据中哪一位为零来判断哪一个按键被按下。 逐列扫描 :通过低四位轮流输出低电平来

    2024年02月07日
    浏览(65)
  • 【唠唠嵌入式】__如何学习单片机?

    目录 前言 个人定位,从事软件还是硬件? 学习内容 (* ̄︶ ̄)创作不易!期待你们的 点赞、收藏和评论喔。 作为一个老司机,多年来跟 单片机 、 Keil 、 C语言 、 AD 、 烙铁 、 风枪 、 示波器 、 电子元器件 纠缠不清。期间经历了不少磨练,熬过了很多夜晚,也掉了大把头

    2024年02月06日
    浏览(71)
  • 【单片机毕设选题】stm32实现车牌识别系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(60)
  • 单片机项目分享 stm32机器视觉的人脸识别系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月22日
    浏览(84)
  • 单片机项目分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(113)
  • 嵌入式Linux知识第六章——单片机

    目录 6.1 CPU 内存 虚拟内存 磁盘/硬盘 的关系⭐⭐⭐ 6.2 CPU内部结构⭐⭐⭐⭐ 6.3 ARM结构处理器简析 ⭐⭐ 6.4波特率是什么,为什么双方波特率要相同,高低波特率有什么区别;⭐⭐⭐⭐ 6.5arm和dsp有什么区别⭐⭐ 6.6 ROM RAM的概念浅析⭐⭐⭐ 6.7 IO口工作方式:上拉输入 下拉输入

    2024年04月10日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包