打印
[牛人杂谈]

单片机C语言教程之数组

[复制链接]
848|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
orangebanana|  楼主 | 2016-4-24 20:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在我们知道了,不同的数据实际上是占用的单元格不同,8个单元格就是char,16个坑就是int,32坑就是long. 在实际应用中,可能有很多char,比如char1,char2,char3...,也很多int1,int2,int3...,也有很多long1,long2,long3等等。这么多的变量,我们能不能归个类。比如把单元格长度相同的放在一起,比如char1,char2,char3等,这样就产生了数组的概念。那么如何把这些相同长度的单元格变量放在一起呢,也就是说如何定义一个数组呢?
一维数组的定义方式如下:
类型说明符 数组名 [常量表达式]
类型说明符: 表示你想把什么长度单元格的变量放在一起,比如是char,int还是long
数组名: 给你定义的数组取个名字,数组标识符
常量表达式: 表示你定义的数组中装有多少个元素,也就是数组长度
比如char a[4]; 说明字符型数组a,有4个元素
既然定义了数组,那么如何访问数组中的元素呢?比如我要访问数组a的第二个元素,
a[0] 表示数组的第一个元素
a[1]就表示数组的第二个元素
依次类推。
现在我们举个例子如何在单片机编程中使用数组,

如何在单片机编程中使用数组
定义一个数组,将数组中各元素的值给P1端口实现流水灯的功能
/*目的: 练习如何在单片机编程中使用数组
  1. 定义一个数组
  2. 给数组赋值
  3. 把数组中各元素的值给P1端口实现流水灯的功能
*/

#include "reg52.h"
typedef unsigned char uchar;
typedef unsigned char chararray[8];//定义一个新的数组类型,它有8个元素,数据类型为unsigned char
void delayUs (unsigned char t);
void delayMs(unsigned char t);
void main(void)
{
        chararray a ={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf ,0xbf ,0x7f};
        while(1)
        {
                uchar i;
                P1=a[0];
                for (i=0;i<8;i++)
                {
                        P1=a;
                        delayMs(100);
                }
                for (i=7;i>0;i--)
                {
                        P1=a;
                        delayMs(100);
                }
        }
}

void delayUs (uchar t)
{
        while(--t);
}

void delayMs(uchar t)
{
        while(--t)
        {
                delayUs(245);
                delayUs(245);
        }
}

沙发
643757107| | 2016-4-24 21:39 | 只看该作者
数组是一种特殊的指针变量。

使用特权

评论回复
板凳
598330983| | 2016-4-24 23:06 | 只看该作者
在单片机编程中使用数组
定义一个数组,将数组中各元素的值给P1端口实现流水灯的功能

使用特权

评论回复
地板
gejigeji521| | 2016-4-25 11:27 | 只看该作者
我喜欢把一类数据存在一个数组里面,这样方便操作,生成的代码紧凑型还好。

使用特权

评论回复
5
orangebanana|  楼主 | 2016-4-25 12:53 | 只看该作者
新唐单片机的指令是32位的吗,一个字占用32个坑?

使用特权

评论回复
6
secretuniverse| | 2016-4-25 21:27 | 只看该作者
数组和指针是对应的,和理解汇编语言的串是一样的概念

使用特权

评论回复
7
643757107| | 2016-4-25 22:14 | 只看该作者
数组这个东西用对了很方便,可以使用for循环的处理地方,一般都有数组概念。

使用特权

评论回复
8
heisexingqisi| | 2016-4-25 23:10 | 只看该作者
统一性质的数据,特别逻辑上具有连续操作性的,均可以放数组里。

使用特权

评论回复
9
wahahaheihei| | 2016-4-25 23:28 | 只看该作者
所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。

使用特权

评论回复
10
bbsvca| | 2016-4-26 07:15 | 只看该作者
很好的**,值得学习,支持一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

113

帖子

2

粉丝