C语言程序设计 教学课件 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第8章 指 针.ppt

C语言程序设计 教学课件 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第8章 指 针.ppt

ID:50043598

大小:490.00 KB

页数:171页

时间:2020-03-08

C语言程序设计 教学课件 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第8章 指 针.ppt_第1页
C语言程序设计 教学课件 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第8章 指 针.ppt_第2页
C语言程序设计 教学课件 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第8章 指 针.ppt_第3页
C语言程序设计 教学课件 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第8章 指 针.ppt_第4页
C语言程序设计 教学课件 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第8章 指 针.ppt_第5页
资源描述:

《C语言程序设计 教学课件 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第8章 指 针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章指针什么是指针8.1指针变量的定义8.2指针变量的引用8.3指针变量的运算8.4指针变量和数组8.5指向字符串的指针变量8.7指针作为函数参数8.6指针数组8.9指向多维数组的指针和指针变量8.8指向void量的指针变量8.13指向函数的指针变量8.11返回指针的函数8.12指向指针的指针8.10应用举例8.16命令行参数8.15动态存储分配8.14本章介绍指针的概念、指针变量的定义及引用方式、指针变量的运算、利用指针变量构成复杂的数据类型以及指针变量的典型应用等。8.1什么是指针整个内存由连续的存储单元组成,每个存储单元都有惟一的地址编

2、号。内存地址的号码是统一编排的,从0到所装内存的最大值。在源程序中定义的变量,在编译时就为它们分配相应的内存单元。例如:intx;floatt;x=10;t=0.618;经编译后它们在内存中的存放示意情况如图8-1所示。程序中不同类型的数据要占用的内存空间的大小是不同的。在执行程序时,CPU并不直接识别变量的名称,但它知道各变量在内存的地址。所以,在机器内部对变量值的存取是通过各自的地址进行的。这种在编程时直接按变量名来取变量值的方式称为“直接访问”方式。对变量的访问还有“间接访问”方式。图8-1变量在内存中的存放情况图8-2间接访问指针是C语

3、言中的一种数据类型,它表示对应数据在内存中存储单元的地址。简言之,指针是内存地址的别名。如果一个指针变量的值恰好是另一个变量的内存地址,那么,就说该指针变量指向相应的变量。图8-3指针变量指向一个变量8.2指针变量的定义指针变量定义的一般形式是:类型*指针变量名;例如:int*p;/*p是指向整型变量的指针变量*/char*next;/*next是指向字符型变量的指针变量*/float*fp;/*fp是指向浮点型变量的指针变量*/double*dp;/*dp是指向双精度型变量的指针变量*/对指针变量的定义应注意以下几点。①指针变量名之前的“*”

4、号意味着“指向……的指针”,就是说它所修饰的变量是指针变量。②指针变量是用它们所指向的对象的类型来表征的。③从语法上讲,指针变量可以指向任何类型的对象,包括指向数组、指向别的指针变量、指向函数或指向结构变量等等,从而可以表示复杂的数据类型。例如,有下列数据说明:char(*ptr)[5];/*ptr是指向由5个字符元素构成的数组的指针变量*/int**ip;/*ip是一个指向“指向整型量的指针变量”的指针变量*/int*fip();/*fip是返回指向整数的指针的函数*/int(*pti)();/*pfi是指向一个返回整数的函数的指针变量*/图

5、8-4定义指向字符数组的指针变量int*(*pfpi)();/*pfpi是一个指向函数的指针变量,该函数返回指向整数的指针*/指针变量的类型就是把相应数据说明中的标识符(即变量名)去掉后所余下的部分。例如:char(*ptr)[5];图8-4定义指向字符数组的指针变量应注意,对ptr进行上述定义之后,仅表示它“能够”指向由5个元素构成的字符数组,但并未实际指向某个数组。④指针变量也占用内存单元,而且所有指针变量占用内存单元的数量都是相同的。例如:inta,*ap;double*dp,var;8.3指针变量的引用8.3.1&运算符&是单目运算符,

6、其作用是取出操作对象在内存单元的地址。它所作用的操作对象必须是变量或者数组元素。&不能作用于表达式或者常量,例如:inta,b;doublevar;charname[10];那么,&a,&b,&var,&name[0]~&name[9]等表达式都是合法的。然而,表达式&(a+1),&(a+b),&5,&(var*3.14),&name都是非法的。另外,&运算符也不能作用于寄存器类变量。8.3.2*运算符运算符*也是单目运算符,其作用是访问操作对象所指向的变量。它所作用的操作对象必须是指针变量或指针表达式,就是说,这些对象都已指向内存中确切的单元

7、。例如:int*p;p=&a;*p=99;因此,当p指向a之后,*p就等同于a,可完全当成一个整数变量来使用。在程序中使用指针变量进行间接访问之前,必须给它们赋初值,使它们指向相应的变量。一个指针变量只能指向同一类型的变量。指针变量的间接访问就是该指针变量所指向的变量。8.4指针变量的运算址量并不是整数,指针变量的取值和运算始终与内存地址的表示关联在一起。指针变量的运算可以包括以下几个方面。(1)所有类型的指针变量都可置为NULL,其值是0。NULL指针也称作空指针,在程序中通常用它作为某种标志(如链表的末尾、函数调用失败等)。(2)可以把一个

8、地址值赋给同类型的指针变量。为指针变量赋值的方式有以下几种。①利用单目运算符&取出运算对象的地址,然后赋给相应的指针变量。将一个变量的地址赋给指针变量

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

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

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