1. 1、本文档共37页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
200912281663.pdf

7 章 指针 学目的 l 握指针、指针变量的概念 l 理解指针基本运算 l 握指针和变量之间的关系 l 握数组和指针的关系 l 握函数和指针的关系 指针是C 语言中一个重要的概念,也是C 语言的精华部分,它提供了一种较为直观的 地址操作手段。正确使用指针,可以有效的描述复杂的数据结构,书写出简洁,高效的程序。 7.1 指针的概念 7.1.1 地址与指针 算机的内存储器被划分为一个个的内存单元。存储单元按一定的规则编号,这个编号 就是存储单元的地址。地址编码的最基本单位是字节 (每个字节由 8 个二进制位组成),也 就是说每个字节是一个基本内存单元,对应一个地址。 算机就是通过这种地址编码的方式 来管理内存数据,进行读写的准确定位的。图7.1 (1)是内存简化结构框图。 在程序中是如何在内存中进行数据的存取呢?一是通过变量名,二是通过地址。程序中 不同类型的数据所占用的内存单元数不等,如整型数据占2 个单元,字符数据占1 个单元等。 具有静态 存期的变量在程序开始运行前,也就是在编译的时候就已经分配了内存空间;具 有动态 存期的变量,是在程序运行时遇到变量的声明语句时才被分配内存空间的。在变量 获得内存空间的同时变量名也就成为相应内存空间的名称,代表内存中的数据,所以我们可 以通过变量名来访问内存空间,在程序中通过变量名来访问变量内容。但是,有时使用变量 名不够方便或者根本没有变量名可用,这时就需要直接用地址来访问内存单元。例如,在不 同的函数之间传送大量的数据时,如果不是传递变量值,而是传递变量地址,就会减小系统 开销,提高效率。如果是动态分配的内存单元(将在以后的章节里介绍),则根本就没有名 称,只能通过地址访问。 对内存单元的访问管理可以和学 公寓的情况类比,如图7.1 (2 )所示。假设每个学 住一间房,每个学 就相当于一个变量的内容,房间就是存储单元,房号就是存储地址。如 果知道了学生姓名,可以通过这个名字来访问该学 ,这里相当于用普通变量名访问数据。 如果知道了房号,同 也可以访问该学 ,这里相当于通过地址访问数据。 在高级语言程序设计中,内存地址我们称之为指针,在C 语言中有专门用来存放内存单 元地址的数据类型,称为指针类型。 1 7.1.2 指针变量 指针也是一种数据类型,具有指针类型的变量称为指针变量,指针变量是用于存放内存 单元地址的。在不会引起混淆的情况下,也将指针变量简称为指针。 指针变量也是先声明,后使用的,声明指针变量的语法形式是: 数据类型 *标识符; 其中,“*”表示后面声明的变量是指针类型的变量。指针变量一旦被赋值,我们就说该 指针变量有了指向。“数据类型”可以是任意类型,指的是指针所指向的对象类型,这说明 了指针所指向的内存单元可以用于存放什么类型的数据,我们称之为指针的类型。例如,语 句 int *p; 其含义是声明了一个指针变量p,它指向的数据类型是int 型的,p 专门用来存放int 型数 据的地址。 那么,为什么在声明指针变量时要指出它所指对象是什么数据类型呢?为了理解这一 点,我们可以思考一下,当声明一个简单变量时,例如int a;系统会对变量a 有什么处理呢? 首先,系统会分配内存空间,再之,会根据int 类型知道a 的取值范围,并且还会知道a 能 够进行算术、关系等相应的运算规则。由此,在稍后介绍的指针的运算时,会看到指针的运 算规则与它所指向的对象的类型密切相关,所以C 中没有一种孤立的“地址”类型,声明指 针变量时必须明确它用于存放什么类型数据的地址。 指针变量和普通变量的共同点是:它们都能存放数据,而又有自己的地址。不同的是: 普通变量中直接存放通常意义下的数据,而指针变量中存放的是地址。 需要特别提出的是指针变量和指针所指向的变量是两个不同的概念。指针变量是用于存 放内存单元地址的变量,指针所指向的变量是指针变量中所保存的内存地址对应的变量。

文档评论(0)

cai + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档