51单片机(一):char数组

一、数组的基本概念

        从概念上讲,数组是具有相同数据类型的有序数据的组合,一般来讲,数组定义后应满足:①具有相同的数据类型;②具有相同的名字;③在存储器中是被连续存放的。

        比如数码管真值表,如果把关键字code去掉,数组元素将被保存在RAM中,在程序中可读可写,同时也可以在中括号里面标明这个数组所包含的元素个数,比如:

unsigned char LedChar[16] = {
    0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
    0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
};

        在这个数组中的每个值都称为数组的一个元素,这些元素都具备相同的数据类型就是unsigned char型,它们还有一个共同的名字LedChar,不管放到RAM中还是FLASH中,它们都是存放在一块连续的存储空间里的。

        但有一点需要特别注意,这个数组一共有16(中括号中的数值)个元素,但数组的单个元素的表达方式是:下标是从0开始,因此实际上上面这个数组的首个元素LedChar [0]的值是0xC0,而LedChar [15]的值是0x8E,下标的范围是0~15,共表示16个元素。

        数组LedChar只有一个下标,称之为一维数组,还有两个下标和多个下标的,称之为二维数组和多维数组。比如“unsigned char a [2][3];”表示这是一个2行3列的二维数组。

二、char数组存储数据的形式

        在单片机中,char数组中的数据是以字节(byte)的方式存储的。char类型表示一个字节的数据,即8位(8 bits)。在C语言中,char类型是用来表示字符的,但是它也可以用来存储其他8位的数据。char数组可以用来存储一串字符或者一串字节数据。例如,如果定义了一个char数组`char myArray[4] = { 'A', 'B', 'C', 'D' };`,则在内存中存储为'65'(对应字符'A'的ASCII码)、'66'('B'的ASCII码)、'67'('C'的ASCII码)和'68'('D'的ASCII码)四个字节。

        数组中的每个元素都有一个索引,索引从0开始,依次递增。通过索引访问数组元素,可以读取或者修改存储在数组中的数据。需要注意的是,char数组中的数据存储顺序与数组的声明顺序一致。上述示例中的数组是顺序存储的,即'65'、'66'、'67'和'68'依次存储在myArray[0]、myArray[1]、myArray[2]和myArray[3]中。如果需要改变数据的存储顺序,可以通过操作数组的索引进行调整。

        总之,char数组中的数据以字节的形式存储,每个元素占用一个字节,存储顺序与数组的声明顺序一致。

三、常见错误及解决方法

        常见错误:'DATA': SEGMENT TOO LARGE;

        解决方法:在数组变量前面加上关键字“code”

        当遇到'DATA': SEGMENT TOO LARGE的错误时,通常是因为你在内部数据存储器中定义了太大的数组。如果你在定义的数组变量前加上code关键字,编译器会把这个变量当作位于程序存储器(Flash Memory)的变量,而不是位于内部数据存储器(SRAM)的变量。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值