C及C++程序设计 第3版 教学课件 张富 第8章 指针.ppt

C及C++程序设计 第3版 教学课件 张富 第8章 指针.ppt

  1. 1、本文档共118页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 指 针 在这一章,首先讲述指针的概念和与其相关的操作。然后介绍指针在程序设计中的应用。在指针的应用中,数组和指针的关系极为密切,本章将重点讨论这方面的问题。本章最后介绍多重指针的概念及其在程序设计中的应用。     8.1 指针的概念 8.1.1 指针和指针变量 在程序中经常要定义各种数据类型的变量。定义一个变量就意味着在内存中给它分配一定的存储单元,以备存储这个变量的数值。变量的类型不同,分配给它的内存空间大小也不同。 例如,字符型变量分配1个字节,整型变量分配2个字节等。在内存中,每个字节有一个地址。因此,每个变量都有自己的(内存)地址,而变量的数值就存储在分配给它的地址单元中。 当变量的内存单元为一个以上的字节时,所谓变量地址,实际上是指其中第一个字节的地址,称为变量的首地址。这样,对于一个变量,有变量的地址和在该地址存储的内容两个概念。 例如程序中定义了如下的变量: char a; int b; float c; 则系统给用户定义的上述三个变量按所需的字节数分配如图8-1所示内存单元。同时记录下变量名与其地址的关系,如图8-2所示。 对于数组也是一样,例如定义一个整型数组arr[3],系统编译时分配给它一个6个字节的连续内存单元,假设首地址为1000,如图8-3所示。其相应的数组名与地址对照表如图8-4所示。 已知数组的首地址,不难计算出各下标变量arr[0],arr[1]和arr[2]的地址。从而可以像普通变量一样,通过变量名来对变量进行各种运算和操作。 如上所述,通过变量名找到存放数据的地址,进而实现数据的存取和运算。称这种访问数据的方式为直接存取方式。 如果将某一变量的地址存放到另一个变量中,那么,变量内容为地址的这个变量,就叫做指针变量。指针变量中存储的数据(内容)为地址。简单地说,指针就是地址。存放地址的变量就是指针变量。 可见,指针变量是一种特殊的变量,它在内存中保存的不是一般的数值,而是另一个变量的地址。如果一个变量的内容是另一个变量的地址,我们就说第一个变量指向(point)第二个变量。这第一个变量当然就是指针变量。图8-5是指针变量概念的示意图。 程序中有了指针变量后,就可以通过指针变量来处理(如存、取等)指针变量所指变量的数据了。 这种通过指针来实现数据的访问的方法,称为间接存取方式。 对于数组来说,它占用一个连续的内存空间。其中第一个存储单元的地址,称为数组的首地址。数组的每个元素,占用一定数量的单元。对于一定数据类型的数组,每个数组元素的地址也是确定的,并且不难从其首地址计算出来。 因此,对于数组除了采用以前学过的直接存取方式外,同样也可以采用通过指针存取的间接存取方式来操作数组元素的数据。图8-6所示是指向数组的指针示意图。 8.1.2 指针变量的定义 指针变量定义语句的一般格式为: 数据类型 *指针变量名; 这个语句包含两个内容,一是指针变量名。 指针变量名是用合法的C标识符为指针变量起的名字,符号“*”是定义指针变量的标志,不是变量名的一部分。二是指针变量所指向的数据的类型。 在一个定义语句中,可以同时定义普通变量、数组和指针变量。 【例8-1】 下面是两个指针变量定义语句: char *p; int *a, *b; 第一个语句定义变量p是指向字符型数据的指针变量;第二个语句定义变量a和b是指向整型数的指针变量。系统在编译时,将为指针变量p,a,b在内存中设置相应的存储单元。 由于这三个指针变量还没有被赋值,所以他们没有指向具体哪个变量。图8-7所示是这三个指针的示意图。 8.2 指针运算符和指针变量的 初始化 8.2.1 指针运算符 C语言中,对指针变量的操作,主要有两个基本运算(操作)符:“&”和“*”。 1.取地址运算符“&” 取地址运算表达式的一般形式为: 变量 运算符“&”是只有一个操作对象的单

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档