C语言程序设计(第二版)电子教案第6章节指针.pptVIP

  • 1
  • 0
  • 约1.02万字
  • 约 51页
  • 2017-11-12 发布于广东
  • 举报

C语言程序设计(第二版)电子教案第6章节指针.ppt

北京科技大学 计算机系 第6章 指针 6.1 指针的概念 计算机的内存储器是由连续的存储单元组成的,每一个存储单元都对应着一个唯一的编号,这个编号就是地址。 当在程序中定义一个变量时,C编译程序就会为其在内存中分配带有编号的存储单元,以便存放这个变量的取值。变量的类型不同,分配给它的内存空间大小也不同,比如,分给字符变量一个字节,分给整型变量两个字节,分给实型变量四个字节等。 6.1 指针的概念 【例6-1】输出指定变量的地址。 #include stdio.h void main() { int a=10; float b=123.45; char c=A; printf(address of a=%u\n,a); printf(address of b=%u\n,b); printf(address of c=%u\n,c); } 6.1 指针的概念 变量a、b、c在内存中分配的存储单元情况如图6-1所示。 一个地址起到指向某个存储单元的作用,因此,形象地称一个变量的内存地址是它的“指针”,即地址就是指针,指针就是地址。 6.1 指针的概念 把一个变量的内存地址(即指针)存放在另一个变量里,那么这个专门用来存放变量地址的变量就是“指针变量”。 在程序中一般是通过变量名或地址来对内存单元进行存取操作。根据存取变量值的不同方式,分为直接访问和间接访问。 按变量地址存取变量值的方式称为“直接访问”方式。 由指针变量的值得到另一变量的地址,再通过得到的这个地址,完成对存储单元的访问。 这种访问为“间接访问”。 6.2 指针变量的定义和引用 6.2.1 指针变量的定义 6.2.2 指针变量的引用 6.2.3 指针变量应用举例 6.2.1 指针变量的定义 定义指针变量的一般形式为: “类型标识符”是指针变量所指向的变量的类型,“*”表示所定义的变量类型为指针型。例如: int *p; float *q; char *ch; 6.2.1 指针变量的定义 定义指针变量后,就可以写入指向某种数据类型的变量的地址,或者说是为指针变量赋初值,下面通过例子说明。例如: int a=60,*p; float b=17.9,*q; char ch=A,*r; p=a;q=b;r=ch; 6.2.1 指针变量的定义 用图6-3描述如下: 强调说明: 1)定义指针变量时,必须指定指针变量所要指向的变量的类型。 2)一个指针变量只能指向同一类型的变量,例如,有定义“float *p;”,则指针变量p只能指向实型变量,不允许指向实型之外的其它类型的变量。 3)当定义指针变量时,指针变量的值是随机的,不能确定它具体的指向,必须为其赋值才有意义。 6.2.2 指针变量的引用 在指针变量的使用中,有两个与其密切相关的运算符: 1)(取地址运算符) 其一般形式: 其作用是取变量所占用的内存单元的首地址。如:a为变量a的地址,b为变量b的地址。如要把整型变量a 的地址赋给指针变量p,可用以下两种方法完成: int a,*p=a; 或者:int a,*p; p=a; 6.2.2 指针变量的引用 不允许把一个数值赋给指针变量,下面的赋值是错误的: int *p; p=16; 2)*(指针运算符,也称间接访问运算符) 在指针变量的前面添加指针运算符,表示指针变量所指向的变量,运算结果获取指针变量所指向变量的值。其一般形式: 例如: int a=17,*p; p=a; 6.2.2 指针变量的引用 指针变量p指向整型变量a,则*p等价于变量a,即*p的值也为17,可以直观地认为变量a与*p是对应着同一个存储单元。可见,可以通过指针变量p间接访问变量a。 6.2.2 指针变量的引用 下面对运算符“”和“*”作进一步说明如下: 若有:int a,*p;p=a;则*p、a、p是等价的,反之,*a、*p、a也是等价的,均表示变量a。“”和“*”两个运算符的优先级别相同,但按自右而左方向结合。 (*p)++相当于a++,如果去掉括号变为*p++,因“++”与“*”优先级别相同,但按自右而左方向结合, *p++相当于*(p++),因++在p右侧,先对p的原值进行*运算,得到a

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档