基于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中,启动仿真,观察运行结果。某一时刻的运行结果如下图所示。
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中,启动仿真,观察运行结果。某一时刻的运行结果如下图所示。
相关文章推荐
- 基于proteus的51单片机仿真实例四十九、C语言数组的指针演示实例
- 基于proteus的51单片机仿真实例四十七、C语言的指针演示实例
- 基于proteus的51单片机仿真实例四十二、C语言的二维数组演示实例
- 基于proteus的51单片机仿真实例四十五、C语言的共用体演示实例
- 基于proteus的51单片机仿真实例二十七、C语言的语句演示实例
- 基于proteus的51单片机仿真实例四十六、C语言的枚举类型演示实例
- 基于proteus的51单片机仿真实例二十八、C语言的if条件语句演示实例
- 基于proteus的51单片机仿真实例二十一、C语言的自增和自减运算演示实例
- 基于proteus的51单片机仿真实例二十三、C51条件运算符演示实例
- 基于proteus的51单片机仿真实例三十一、C语言的while循环语句
- 基于proteus的51单片机仿真实例三十七、C语言的函数参数传递
- 基于proteus的51单片机仿真实例十三、51单片机的C语言宏定义应用实例
- 基于proteus的51单片机仿真实例二十五、C51中移位位运算符演示实例
- 基于proteus的51单片机仿真实例三十二、C语言的do-while循环语句
- 基于proteus的51单片机仿真实例三十八、C语言的函数调用
- 基于proteus的51单片机仿真实例十八、用单片机端口演示数据的加法和减法运算 4000 结果
- 基于proteus的51单片机仿真实例三十四、C语言的break语句
- 基于proteus的51单片机仿真实例三十九、C语言的文件调用
- 基于proteus的51单片机仿真实例十九、用单片机端口演示数据的乘法运算结果
- 基于proteus的51单片机仿真实例三十五、C语言的continue语句