单片机C语言中数组的用法
的存储空间给这样一个二维结构分配连续的存储单元的呢C51采用按行存放的方法,即在内存中先存放第0行元素,再存放第1行、第2行、......元素,每行中先存放第0列,接着存放第1列、第2列、......的元素。
#include
#include
/*
-----------------------------------------------------
此程序用以说明二维数组的使用方法
-----------------------------------------------------
*/
void main()
{
unsigned char arrays[3][3]={{1,2,3},{2,3,4},{3,4,5}};
//定义一个3行3列的二维数组,其它在内存中还是以一维的方式存储的
//用下面的方式就可以知道这一点
unsigned char test;
test=((unsigned char *)arrays)[6];//test=3;
//将二维数据的首地址强制转为一维数组,按照一维数组的方式访问它
while(1);
}
除了一维数组、二维数组,其实可以定义任何维的数组,多维数组用来表示由多个下标才能决定的量。
例如:int arrays[3][3][3]
表示数组arrays为一个三维数组,对应于三维存储模型。
其实单片机内的存储器是一维的,即所有数据都是依次顺序存储的,所以无论几维数组都由编译程序抽象出数组到单片机存储的实际的一维数组映射。
#include
/*
-----------------------------------------------------
此程序用以说明三维数组
-----------------------------------------------------
*/
void main()
{
unsigned char test;
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
while(1);
}(3)结构数组
多个结构变量也可以构成结构数组,其定义方法与定义结构变量完全相同。
如下例:
#include
/*
-----------------------------------------------------
此程序用以说明结构数组
-----------------------------------------------------
*/
typedef struct
{
int a,b,c,d;
} Stru;
void main()
{
Stru stru[10]; //定义结构数组
unsigned char i=0;
for(;i10;i++)
{
stru[i].a=i;
stru[i].b=i;
stru[i].c=i;
stru[i].d=i;
}
while(1);
}
- 嵌入式C语言中const与volatile的用法详解(11-27)
- AVR的IO用法笔记(05-11)
- AVR定时器的用法要点介绍(08-10)
- 有名管道(FIFO)的用法(08-06)
- VC下使用复数示例(建议使用“用法一”)(07-05)
- 基于TMS320C62X DSP的混合编程研究(07-12)