基于proteus的51单片机仿真实例四十二、C语言的二维数组演示实例

1、C语言允许使用多维数组,最简单的多维数组是二维数组,定义多维数组时,在要在数组名后面增加相当于维数的常量表达式即可。
对于二维数组,其定义形式为:
数据类型 [存储器类型] 数组名[常量表达式1][常量表达式2];
例如,定义一个无符号字符型二维数组,
unsigned char m[3][4];
二维数组以行列矩阵的形式存储,第一个下标代表行,第二个下标代表列。上一数组中个元素的排列顺序如下
m[0][0],m[0][1],m[0][2],m[0][3],
m[1][0],m[1][1],m[1][2],m[1][3],
m[2][0],m[2][1],m[2][2],m[2][3],
 
2、二维数组的赋值方法有两种:
1)按存储顺序整体赋值,这是一种比较直观的赋值方式,例如
int m[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
如果是给全部元素赋值,可以不指定行数,例如
int m[][4]={0,1,2,3,4,5,6,7,8,9,10,11};
2)按每行分别赋值。为了能更直观的给二维数组赋值,可以按每行分别赋值,这是要用
{}把每行的值包含起来,没有赋值的部分默认为0,例如
int m[3][4]={{0,1,2,3}
             {4,5,6,7}
             {8,9}};
最后两个元素没有赋值,默认为0,即m[2][2]=0,m[2][3]=0。
 
3、数组的定义要注意以下几个问题:
1)数组名的命名规则同变量名的命名规则一样,要符合C语言标识符的命名规则
2)数组名后面的中括号[]是数组的标志,不能用圆括号或其他符号代替
3)数组元素的个数必须是一个固定的值,可以是整型常量、符号常量或者整形常量表达式。
 
4、本例创建一个二维数组num[3][4],然后从数组中选取3个数组元素num[0][0],num[1][2],num[2][3].然后分别将这三个元素送到P0口显示
5、在keil c51中新建工程ex31,编写如下程序代码,编译并生成ex31.hex文件
//实例31:二维数组演示实例
#include <reg51.h>      //包含头文件
void delay(void)      //延时函数
{
  unsigned int i,j;
 for(i = 0;i < 5000;i++)
  for(j = 0;j< 50;j++);
}
void main(void)
{
  unsigned char num[3][4] = {{0x0f,0xf0,0x55,0xaa} , 
                           {0x01,0x02,0x03,0x04} ,
         {0x05,0x06,0x07,0x08}};   //定义一个数组,同时给数组赋初值
 P0 = num[0][0];          //数组的第一个元素送到P0口显示
 delay();          // 延时一段时间
 P0 = num[1][2];         //
 delay();
 P0 = num[2][3];
 delay();
 while(1)
 {
 } 
}
6、在proteus中新建仿真文件ex31.dsn,原理图如下图所示
基于proteus的51单片机仿真实例四十二、C语言的二维数组演示实例
7、将ex31.hex文件载入at89c51中,启动仿真,运行结果依次如下图所示

基于proteus的51单片机仿真实例四十二、C语言的二维数组演示实例
基于proteus的51单片机仿真实例四十二、C语言的二维数组演示实例