基於proteus的51單片機仿真實例四十八、C語言的指針數組演示實例

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中,啓動仿真,觀察運行結果。某一時刻的運行結果如下圖所示。


發佈了112 篇原創文章 · 獲贊 112 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章