C语言程序设计实例教程(第2版)丁爱萍第8章 指针.ppt

C语言程序设计实例教程(第2版)丁爱萍第8章 指针.ppt

ID:50352361

大小:917.50 KB

页数:154页

时间:2020-03-08

C语言程序设计实例教程(第2版)丁爱萍第8章 指针.ppt_第1页
C语言程序设计实例教程(第2版)丁爱萍第8章 指针.ppt_第2页
C语言程序设计实例教程(第2版)丁爱萍第8章 指针.ppt_第3页
C语言程序设计实例教程(第2版)丁爱萍第8章 指针.ppt_第4页
C语言程序设计实例教程(第2版)丁爱萍第8章 指针.ppt_第5页
资源描述:

《C语言程序设计实例教程(第2版)丁爱萍第8章 指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章指针8.1指针的基本概念8.2指针变量8.3数组与指针8.4函数的指针习题88.1指针的基本概念什么是指针呢?一般来说,指针就是地址,是一种数据类型。为了掌握指针的概念,必须要弄清楚数据在内存中是如何存储和读取的。在程序中所定义的变量经过编译系统处理后,给该变量分配相应的存储单元,存储单元所占的字节数由变量的类型决定。通常整型变量占2个字节,字符型变量占1个字节,实型变量占4个字节。例如,程序中作如下定义:inti,j,k;一般情况下,经编译程序处理后,可能的存储形式如图8.1所示。图8.1变量i、j、k在内存中的存储情况由图8.1可看出,变量i、j、k在内存中分别占2个字节存

2、储单元,内存单元地址为2000和2001的2个字节单元分配给变量I,2002和2003的2个字节单元分配给变量j,2004和2005的2个字节单元分配给变量k。并且以首地址作为变量的地址,也就是说,变量i、j、k在内存中的物理地址分别为2000、2002、2004。一旦为变量分配了存储单元,在程序中对变量的操作实际上就是对内存单元的操作。例如:i=3,j=4;k=i+j;printf("%d",k);以上程序段首先将3和4分别赋于变量i和j,实际上是将3和4分别送入2000单元和2002单元,然后执行“k=i+j;”,实际上是从2000单元和2002单元中分别取出3和4进行相加,再将

3、其和送入2004单元。其执行情况如图8.2所示。迄今为止,程序中对变量的操作大都采用这种方式,这种按变量地址直接对变量的值进行存取的方法称为“直接访问”方式。在访问变量时,不是直接按变量的地址取其值,而是将变量的地址存放在另一个存储单元中。要访问某变量时,先访问存放该变量地址的存储单元,再间接地访问变量,对变量进行存取操作,这种方式称为“间接访问”方式,如图8.3所示。图8.2变量i、j、k的存取情况图8.3对变量的间接访问要访问变量i,首先得访问变量p,即从该变量地址3000的存储单元中取出2000,也就是变量的地址,然后通过这个地址,间接地访问变量i。这里,存放变量i的地址的单元

4、,也称其为指向变量i的变量,即p指向i,p叫做指针变量,如图8.4所示。指针变量的内容(地址值)称为指针,可以说,指针就是地址,变量的指针就是变量的地址,存放地址的变量,就是指针变量。经编译后,变量的地址是不变的量,而指针变量可根据需要存放不同变量的地址,因此它的值是可以改变的。8.2指针变量变量的指针就是变量的地址,如何定义一个指向一个变量的指针变量,如何使指针变量表示它与变量之间的联系呢?可以用运算符“*”来定义指针变量,也可以用“*”表示“指向”关系来使用指针变量。8.2.1指针变量的定义指针变量是专门用于存放地址的变量,C语言将它定义为“指针类型”。指针变量也是一种变量,但该

5、变量中存放的不是普通的数据,而是地址。如果一个指针变量中存放的是某一个变量的地址,那么指针变量就指向那个变量。C语言规定所有变量必须“先定义,后使用”。定义指针变量的一般格式为类型标识符*指针变量名;例如:Inti,j,*p1,*p2;定义了两个整型变量i、j,又定义了两个指针变量p1、p2(注意不是*p1、*p2),p1、p2是指向整型变量的指针变量。说明:(1)指针变量前面的“*”,表示该变量的类型为指针型变量。注意,指针变量名是p1、p2,而不是*p1、*p2。(2)在定义指针变量时必须指定基类型。这是因为基类型的指定与指针的移动和指针的运算(加、减)相关。例如,“使指针移动1

6、个位置”或“使指针值加1”,这个“1”代表什么呢?如果指针是指向一个整型变量,那么“使指针移动1个位置”意味着移动2个字节,“使指针值加1”意味着使地址值加2个字节;如果指针是指向一个实型变量,则增加的不是2而是4。8.2.2指针变量的赋值可用运算符“&”求变量的地址。可以用赋值语句使一个指针变量指向一个变量,例如:p1=&i;p2=&j;表示将变量i的地址赋给指针变量p1,将变量j的地址赋给指针变量p2。也就是说,p1、p2分别指向了变量i、j,如图8.5所示。也可以在定义指针变量的同时对其赋值,例如:inti=3,j=4,*p1=&i,*p2=&j;等价于inti,j,*p1,*

7、p2;i=3;j=4;p1=&i;p2=&j;在定义指针变量时应注意:(1)在定义指针变量时,指针变量的值是随机的,不能确定它具体的指向,必须为其赋值,才有意义。(2)指针变量的类型必须与其存放的变量类型一致,即只有整型变量的地址才能放到指向整型变量的指针变量中。8.2.3指针的两个运算符在C语言中有两个关于指针的运算符:&——取地址运算符;*——指针运算符。取地址运算符“&”可以加在变量和数组元素的前面,其意义是取出变量或数组元素的地址。因为指针变量也是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。