指针变量的定义与引用.ppt_第1页
指针变量的定义与引用.ppt_第2页
指针变量的定义与引用.ppt_第3页
指针变量的定义与引用.ppt_第4页
指针变量的定义与引用.ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

指针变量的定义与引用,制作人:涂小琴,学习目标:掌握各种类型指针的定义、初 始化;掌握指针的使用方法;理解指针的概念。 重点:变量的地址和指针概念的建立,指针变量的定义和引用 难点:指针概念及指针变量的引用,指针:就是地址,就像我们学过的整型、 实型等数据类型一样,指针也是一种数据类型。 指针变量:是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。指针变量就是存放地址的变量。,指针与指针变量的概念,内 存,图1 内存示意图,内存是计算机用于存储数据的存储器,以一个字节作为存储单元,为了便于访问,给每个字节单元一个唯一的编号,第一字节单元编号为 0,以后各单元按顺序连续编号,这些单元编号即称为内存单元的地址。,内存地址:内存中存储单元 的编号,图2:变量在内存中的表示,int a=5;,变量的地址,变量 a在内存中占了两个 字节的存储空间, 2000是这 段空间的首地址,那么 2000 就是变量 a在内存中的地址。 那么程序是怎样访问变量 a 的呢? 首先,程序必须知道变量 a的地址。这就又提出了一个 新的问题,变量 a的地址放 在哪里,在程序中又是怎样 表示的?,图 3 指针和指针变量的关系,指针变量p 在内存中也占 有一个空间,指针变量名p 就是这个空间的名称,这个 空间里存放的不是普通的值, 而是一个地址值。从图中 可以看出,这个地址是变量 a在内存中的位置。所以我 们就说这个地址或者说这个 指针指向整型变量 a,也可以 说是指针变量 p 指向整 型变量 a 。,指针和指针变量,变量的访问方式,直接访问:是指在程序执行过程中需要访问变量值时,直接存取变量所占内存单元中的内容。,间接访问: 将变量的地址存放在一种特殊变量中,利用这个特殊变量进行访问。,说明:用变量名对变量的访问也属于直接访问,因为在编译后,变量名和变量 地址之间有对应关系,对变量名的访问系统自动转换成利用地址对变量的访问。,图4:直接访问,图5:间接访问,指针变量的定义,为表示指针变量和它指向的变量之间的关系,在C语言中,用指针标示符“ * ”表示“指向”,反映指针变量与它所指向的变量之间的联系。指针变量的定义仍遵循先定义后使用的原则,定义指针变量与前面介绍的变量定义形式相似,都是用说明语句来实现,定义时应指明指针变量的类型及变量名。 其定义形式为: 数据类型标识符 *指针变量名; 如: int *p; /* 定义了一个指向整型变量的指针变量 p */ float *q; double *d;,在定义指针变量时同时给该变量一个初始值,称为指针变量初始化。 例如: int a=20; int *pa; pa=(&为取地址符),指针变量的初始化,(1)指针变量名前的“*”表示该变量为指针变量,而指针变量名不包含该“*”。 (2)一个指针变量只能指向同一类型的变量。 (3)指针变量中只能存放地址,而不能将数值型数据赋给指针变量。 (4)只有当指针变量中具有确定地址后才能被引用。,指针变量的几点说明,main() int a=18; int *p= /* 输出指针变量 p 指向的 目标的值 */ 程序运行结果: a=18 *p=18 两个输出语句输出的结果相同,说明指针 变量 p 所指向的目标就是整型变量 a。,例1.输出变量的值,对指针变量的引用包含两个方面:一是对指针变量本身的引用,如对指针变量进行各种运算;二是利用指针变量来访问所指向的目标,对指针的间接引用。 与指针相关的两个运算符: (1)&:取地址运算符 (2)*:指针运算符,取其指向的内容 指针指向的对象可以表示成如下形式: *指针变量 特别要注意的是,此处*是访问指针所指向变量的运算符,与指针定义时的*不同。在定义指针变量时,* 号表示其后是指针变量。在其它位置出现,* 号是运算符。如果与其联系的操作数是指针类型,*是间接访问(引用)运算符;如果与其联系的操作数是基本类型, *是乘法运算符。在使用和阅读程序时要严格 区分* 号的含义。,指针变量的引用,若有定义: int a=8; int p= 说明指针变量p指向整型变量 a,a是p 指向的目标,可以用*p来引用 a,*p 与 a是等价的,因此,*p 可以像普通变量一样使用。 注意:*与&具有相同的优先级,结合方向为从右到左。这样&*p 即&(*p)是对变量*p 取地址,它与&a是等价的。p 与&(*p)等价,a与*(&a),a与*p 等价。,例2:输入两个整数,按从大到小顺序输出 main() int a,b,*p1,*p2,*p; scanf(“%d,%d”, ,运行情况如下: 5,9 a=5,b=9 max=9,min=5,说明:int *pi,pj;该“*”号是指针变量符,表示定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论