第4章 单片机C语言程序设计78091课件.pptVIP

  • 0
  • 0
  • 约3.62万字
  • 约 100页
  • 2018-03-06 发布于湖北
  • 举报
第4章 单片机C语言程序设计78091课件

间接访问方式。例如要存取变量a中的值时,可以先将变量a的地址放在另一个变量b中,访问时先找到变量b,从变量b中取出变量a的地址,然后根据这个地址从内存单元中取出变量a的值。这就是间接访问。在这里,从变量b中取出的不是所访问的数据,而是访问的数据(变量a的值)的地址,这就是指针,变量b称为指针变量。 关于指针,注意两个基本概念:变量的指针和指向变量的指针变量。变量的指针就是变量的地址。对于变量a,如果它所对应的内存单元地址为2000H,它的指针就是2000H。指针变量是指一个专门用来存放另一个变量地址的变量,它的值是指针。上面变量b中存放的是变量a的地址,变量b中的值是变量a的指针,变量b就是一个指向变量a的指针变量。 如上所述,指针实质上就是各种数据在内存单元的地址,在C51语言中,不仅有指向一般类型变量的指针,还有指向各种组合类型变量的指针。在本书中我们只讨论指向一般变量的指针的定义与引用,对于指向组合类型的指针,大家可以参考其它书籍学习它的使用。 * 二.指针变量的定义 指针变量的定义与一般变量的定义类似,定义的一般形式为: 数据类型说明符 [存储器类型] *指针变量名; 其中: “数据类型说明符”说明了该指针变量所指向的变量的类型。 “存储器类型”是可选项,它是C5l编译器的一种扩展.如果带有此选项.指针被定义为基于存储器的指针。无此选项时,被定义为一般指针,这两种指针的区别在于它们占的存储字节不同。 下面是几个指针变量定义的例子: int * p1; /*定义一个指向整型变量的指针变量p1*/ char * p2; /*定义一个指向字符变量的指针变量p2*/ char data * p3; /*定义一个指向字符变量的指针变量p3,该指针访问的数据在片内数据存储器中,该指针在内存中占一个字节*/ float xdata * p4; /*定义一个指向字符变量的指针变量p4,该指针访问的数据在片外数据存储器中,该指针在内存中占两个字节*/ * 三.指针变量的引用 指针变量是存放另一变量地址的特殊变量,指针变量只能存放地址。指针变量使用时注意两个运算符:和*。这两个运算符在前面已经介绍,其中:“”是取地址运算符,“*”是指针运算符。通过“”取地址运算符可以把一个变量的地址送给指针变量,使指针变量指向该变量;通过“*”指针运算符可以实现通过指针变量访问它所指向的变量的值。 指针变量经过定义之后可以象其他基本类型变量一样引用。例如: int x,* px,* py; /*变量及指针变量定义*/ px=x; /*将变量x的地址赋给指针变量px,使px指向变量x*/ * px=5; /*等价于x=5*/ py=px; /*将指针变量px中的地址赋给指针变量py,使指针变量py也指向x*/ 【例4-29】输入两个整数x与y,经比较后按大小顺序输出。 程序如下: * #include reg52.h //包含特殊功能寄存器库 #include stdio.h //包含I/O函数库 extern serial_initial(); main() { int x,y; int * p,* p1,* p2; serial_initial(); printf(“input x and y:\n”); scanf(“%d%d”,x,y); p1=x;p2=y; if (xy) {p=p1;p1=p2;p2=p;} printf(“max=%d,min=%d\n”,*p1,*p2); while(1); } 程序执行结果: input x and y: 4 8 max=8,min=4 * 4.9.3 结构 结构是一种组合数据类型,它是将若干个不同类型的变量结合在一起而形成的一种数据的集合体。组成该集合体的各个变量称为结构元素或成员。整个集合体使用一个单独的结构变量名。 一.结构与结构变量的定义 结构与结构变量是两个不同的概念,结构是一种组合数据类型,结构变量是取值为结构这种组合数据类型的变量,相当于整型数据类型与整型变量的关系。对于结构与结构变量的定义有两种方法。 1.先定义结构类型再定义结构变量 结构的定义形式如下: struct 结构名 {结构元素表}; 结构变量的定义如下: struct 结构名 结构变量名1,结构变量名2,……; 其中,“结构元素表”为结构中的各个成员,它可以由不同的数据类型组成。在定义时须指明各个成员的数据类型。 * 例如,定义一个日期结构类型date,它由三个结构元素year、month、day组成,定义结

文档评论(0)

1亿VIP精品文档

相关文档