网站大量收购独家精品文档,联系QQ:2885784924

c语言课件09.ppt

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

9 指针 河南理工大学 《C语言程序设计》编写组 重点、难点 本章重点: 指针变量的使用 指针与数组 指针与字符串 指针作为函数的参数 函数指针 指针函数 指针数组 本章难点: 二维数组的行、列地址 指针的算术运算 指针函数与函数指针的区别 指针数组的使用 内容提要 9.1 地址和指针的概念 9.2 指针变量 9.2.1 指针变量的定义与赋值 9.2.2 指针变量的引用 9.3 指针与数组 9.3.1 指针与一维数组 9.3.2 指针与二维数组 9.4 指针与字符串 9.4.1 指向字符数组的指针变量 9.4.2 指向字符串常量的指针变量 内容提要 9.5 指针与函数 9.5.1 指针作为函数的参数 9.5.2 指向函数的指针(函数指针) 9.5.3 返回指针值的函数(指针函数) 9.6 指针数组和多级指针 9.6.1 指针数组的定义 9.6.2 指针数组与字符串 9.6.3 多级指针 9.6.4 指针数组作为函数参数 9.6.5 带参main函数 提示 指针是C语言的重要数据类型,也是C语言的精华。 利用指针可以有效地表示复杂的数据结构,实现动态内存分配,更方便、灵活地使用数组和字符串以及为函数间各类数据的传递提供简洁便利的方法。 正确而灵活地运用指针,可以编制出简练紧凑、功能强大而且执行效率高的程序。 但是,由于指针概念较复杂,使用较灵活,初学者常常感到较难理解,使用不好反而会带来一些麻烦。 因此,学习时必须从指针的概念入手,理解什么是指针,在C程序中如何定义指针变量,它与其它类型变量的差别,掌握指针在数组、函数等方面的应用。 通过多编程,多上机调试程序,体会指针的概念及其使用的规律,并应用于今后的实际编程中。 指针是C语言学习的难点与重点之一,可以说掌握不好指针,就很难学好C语言。 9.1 地址和指针的概念 根据冯·诺依曼提出的“存储程序”的计算机工作原理,程序要装入内存后才能运行,数据也要装入内存才能进行处理。 内存是以字节为单位的一片连续存储空间,每个字节都有一个唯一的编号,这个编号称为内存的“地址”。 编号从0开始,顺次连续编号,相当于旅馆的房间号。系统通过内存地址来对内存进行管理,且地址用二进制表示。 为便于叙述,这里用十进制描述内存地址。 编译系统根据变量的类型,为其分配一定字节数的存储单元。例如: int i; float x; 系统为变量i分配2个字节的存储单元,为变量x分配4个字节的存储单元。具体分配的字节假定如图9-1表示,变量i的地址为1015,变量x的地址为1201。亦即,每个变量的地址是指该变量所占存储单元的第一个字节的地址。 “直接访问” 与“间接访问” 程序中通过变量名对变量的访问,实际上是对某个地址的存储单元的访问。这种直接按内存地址访问变量的方式称为“直接访问”,也称为直接存取。前面各章节中对变量的访问几乎都是直接访问。 C语言还提供了一种称为“间接访问”(或称间接存取)的方式,将要访问的变量的地址存放到一种特殊的变量中,访问时先从这种特殊变量中取出地址值,然后再根据该地址值去访问相应的存储单元。 “间接访问”实例 例如,将变量i的地址存到特殊变量p中,先直接访问变量p,得变量i的地址1015,然后再去访问地址为1015的存储单元,得到i的值。 由于地址就像是要访问的存储单元的指示标,因此形象地称之为指针,要访问的存储单元也形象地称为“指针所指向的对象”。 如在图9-2(a)中,变量i是变量p所指向的对象,亦即,变量p指向变量i。图9-2(a)可以更加简单形象地表示成图9-2(b),其中“→”只是一种示意,形似“指针”。用来存放地址的变量称为指针变量,如p就是一个指针变量。 9.2 指针变量 9.2.1 指针变量的定义与赋值 (1) 指针变量的定义 指针变量仍遵循先定义后使用的原则,其定义的一般形式为: 基类型 *指针变量名1,*指针变量名2,…; 其中,“*”用来说明所定义的变量是一个指针变量,不能省略;“基类型”表示该指针变量所指对象的数据类型,可以是任意数据类型。例如: int i,*pi; /* pi是指向int型变量的指针变量 */ float *pf; /* pf是指向float型变量的指针变量 */ char *pc; /* pc是指向char型变量的指针变量 */ 指针变量的三要素 1) 指针变量名要符合标识符的命名规则; 2) 指针变量的类型是“基类型 *”。例如,前面定义的指针变量pi,其类型为“int *”; 3) 指针变量所指向的对象可以是变量,也可以是内存中的一个连续区域(详见第10章有关动态存储分配的内容)。 (2) 指针变量的赋值 指针变量与普通

文档评论(0)

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

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

1亿VIP精品文档

相关文档