本科C语言程序设计教程教学资料包教学课件 第八章 指针.ppt

本科C语言程序设计教程教学资料包教学课件 第八章 指针.ppt

ID:51619174

大小:337.50 KB

页数:34页

时间:2020-03-26

本科C语言程序设计教程教学资料包教学课件 第八章  指针.ppt_第1页
本科C语言程序设计教程教学资料包教学课件 第八章  指针.ppt_第2页
本科C语言程序设计教程教学资料包教学课件 第八章  指针.ppt_第3页
本科C语言程序设计教程教学资料包教学课件 第八章  指针.ppt_第4页
本科C语言程序设计教程教学资料包教学课件 第八章  指针.ppt_第5页
资源描述:

《本科C语言程序设计教程教学资料包教学课件 第八章 指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章指针指针是C语言重要内容之一。利用指针变量不仅可以有效地表示各种数据结构,也可以用于参数传递和动态分配存储空间,并能像汇编语言一样处理内存地址,从而编出精炼而高效的程序。8.1指针的基本概念8.1.1指针程序实例计算机的存储器就像是一个巨大的一维数组,每个数组元素就是一个存储单元,这些存存单元是以字节为单位的一个连续存储空间。为了正确访问这些内存单元,必须为每个内存单元编上号。这就如同寝室的房间号一样,如果没有房间号,就不便于管理。在程序中定义的变量是存放数据的一个抽象,在执行存取操作时需要按其在内存中的位置来进行。能否知道一个变量具体存放在内容中的什么位置呢?8.1指

2、针的基本概念【例8.1】显示变量a在内中存放的位置。【解题思路】变量在内存中要有存放位置,用输出语句可以完成对数据的输出。但是要正确表示地址的含义。【程序代码】#includevoidmain(){inta;printf("%d",&a);}【运行结果】12450528.1指针的基本概念8.1.2指针的概念在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆

3、,我们中约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元。8.1指针的基本概念8.1.2指针的概念既然指针变量的值是一个地址,那么这个地址不仅可以是变量的地址,也可以是其它数据结构的地址。在一个指针变量中存放一个数组或一个函数的首地址有何意义呢?因为数组或函数都是连续存放的。通过访问指针变量取得了数组或函数的首地址,也就找到了该数组或函数。这样一来,凡是出现数组,函数的地方都可以用一个指针变量来表示,只要该指针变量中赋予数组或函数的首地址即可。这样做,将会使程序的概念十分清楚,程序本身也精练,高效。在C语言中,一种数

4、据类型或数据结构往往都占有一组连续的内存单元。用“地址”这个概念并不能很好地描述一种数据类型或数据结构,而“指针”虽然实际上也是一个地址,但它却是一个数据结构的首地址,它是“指向”一个数据结构的,因而概念更为清楚,表示更为明确。这也是引入“指针”概念的一个重要原因。8.2变量的指针程序中定义变量后,系统会根据变量的类型为变量在内存中分配若干字节的存储空间,此后这个变量的单元地址也就确定了。有了变量的地址,就可以立即找到该变量所在的存储单元并进行数据的存取操作。存储单元地址唯一对应着(指向)存储单元,因此C语言将存储单元地址形象地称为“指针”。8.2变量的指针8.2.1指针的定

5、义指针:一个变量的地址。指针变量:专门存放变量地址的变量叫指针变量。指针变量的定义形式为:数据类型*指针变量名;如:int*p1;假定a是由下面语句定义的整形变量。inta;8.2变量的指针8.2.1指针的定义若将a的地址存放在另一个变量p中,必须将p定义为整型的指针变量,方法如下:int*p;星号“*”为定义指针变量的标志。将a的地址保存在指针变量p中的方法是由下面赋值语句实现:p=&a;其中a的地址由取地址运算符&得到。要求指针变量p与变量a的具有相同的类型,以便将来通过p间接操作变量a。存放整型变量地址的指针变量必须定义为整型指针变量,指针类型必须与变量类型一致。8.2

6、变量的指针8.2.2变量的指针&和*为单目运算符,优先级别仅次于括号和成员运算符,具有右结合性。若p为a的指针,则*&a、(*p)和a都是等价的。运算符“&”的操作数允许是一般变量或指针变量,运算符“*”的操作数必须为指针变量或地址型表达式。取地址符号与取值符号互为逆运算。【例8.3】取地址符号与取值符号互为逆运算。【解题思路】1.“*”出现在非定义语句的位置代表取值的含义,表示取指针变量所指向变量的值。2.“&”表示取某个变量存放的位置。8.2变量的指针8.2.2变量的指针【程序代码】#includevoidmain(){inta=3,*p;p=&a;pr

7、intf("%d,%d,%d",&a,p,&(*p));printf("%d,%d,%d",a,*p,*(&a));}8.2变量的指针8.2.2变量的指针【运行结果】1245052,1245052,12450523,3,3&a,p,&(*p)取值是相同的,表示指针p取得了变量a的地址。a,*p,*(&a)取值是相同的,表示指针p所指向变量a的值。指针变量必须先赋值,再使用。8.3数组指针指针与数组关系非常密切。在C语言中数组名就是一个不允许赋值运算的指针(地址常量),这个指针的值就是数组的起始地

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

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

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