您的位置:首页 > 编程语言 > C语言/C++

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

2017-05-07 23:07 369 查看
1、指针可以指向某类变量,也可以指向数组。以指针变量为元素的数组称为指针数组。这些指针变量应具有相同的存储类型,并且指向的数据类型也必须相同。

2、指针数组定义的一般格式如下:

类型说明符 *指针数组名[元素个数];

例如:int *p[2];p[2]是含有p[0]和p[1]两个指针的指针数组,指向int型数据。

3、指针数组的初始化可以再定义的同时进行初始化,例如:

unsigned char a[]={0,1,2,3};

unsigned char *p[4]={&a[0],&a[1],&a[2],&[3]};存放的元素必须为地址。

5、本实例使用指针数组控制P0口的8位LED循环点亮。

6、在keil c51中新建项目ex37,编写如下程序代码,编译并生成ex37.hex文件。

 //实例37:用指针数组控制P0口8位LED循环点亮

#include <reg51.h>              //包含头文件

void delay(void)      //延时函数

{

  unsigned char i,j;

 for(i = 0;i < 250;i++)

  for(j = 0;j < 250;j++);

}

void main(void)

{

  unsigned char num[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};  

                      // 定义无符号字符型数组,同时赋初值

 unsigned char *p[]={&num[0],&num[1],&num[2],&num[3],

                     &num[4],&num[5],&num[6],&num[7]};

      //将指针数组中的各个元素指向num数组中每个元素的对应地址,

      //初始化指针数组

 unsigned char i;

 while(1)

 {

   for(i = 0;i < 8;i++)    // 循环8次

  {

    P0 = *p[i];      //指针数组所指向的元素送P0口显示

   delay();

  }

 }

}

7、在proteus中新建仿真文件ex37.dsn。原理图如下图所示

 


8、将ex37.hex文件载入at89c51中,启动仿真,观察运行结果。某一时刻的运行结果如下图所示。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐