C语言程序设计中针教学要点分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言程序设计中针教学要点分析

C语言程序设计中指针教学要点分析 徐 兵 ( 广东海洋大学信息学院, 广东 湛江 524088) 1 指针知识单元构成 1.1 指针定义 在计算机内存中, 每一个存储单元(通常为 1 字节 )都有一个固定的编号, 就像酒店中的房间号 码一样, 这个编号就称为地址, 如图 1 所示。变量 P 和 x的地址分别是 3610 和 2000, 相当于房间 号。在地址所标识的内存单元中存放数据, 如在变 量 x的单元中存放一个数 9, 这就相当于酒店中各 个房间里居住的旅客一样。 x为变量 x的地址,*p 为指针变量 p 所指向的存储 单元。应该注意的是在定义时 * 只起说明作用, 不 是运算符。 比如下面的语句中:float x= 1.5; float *P= x; float *P= x; 根据指针的定义很显然第 2 条语句是正确的。迷 惑的原因就在把 * 当成了运算符。其实, 这里的 float * 共同来修饰 P, 定义一个指向浮点型的指 针变量, 同时要将一个指针 x赋值给 P。1.3 指针与数组 1.3.1 指针与数组区别。在 C语言中数组与指 针的关系非常密切, 但它们还是有着本质上的区 别。指针可以随时指向任意类型的内存单元, 它的 特征是可变。所以我们常用指针来操作动态内存。 当数组作为函数的参数进行传递时, 该数组自动 退化为同类型的指针。例如:char x []=china; char *p=china; 上述两个变量的内存布局情况 是:数组 x需要在内存中占用 6 个字节的空间。这 段内存区通过数组名 x来标志。指针 P 则需要 4 个字节的空间来存放地址, 这 4 个字节用 P 来标 志。其中存放的地址几乎可以指向任何地方,也可 以哪里都不指。目前这个 P 指向某地连续的 6 个 字节即字符串china。在教学过程中应该注意使 学生能够正确认识数组与指针的区别, 并正确运 用它们。 1.3.2 数组指针。数组指针的实质是指针, 其 定义为:int (*p)[n]; 表示 P 为指向由 n 个元素组成 的一维数组的指针变量。 图 2 数组指针与二维数组 1.3.3 指针数组。指针数组的实质是数组, 其 定义为:int*p[n];表示数组 P 由 n 个指向整型数据 的指针元素组成。指针数组中的每一个元素都相 当于一个指针变量, 它的值都是地址。用指针数组 来处理不定长的字符串很方便, 例如有几个姓名 字符串需要存储在数组中, 若用一个二维数组来 存储, 由于不知道每个字符串长度, 只能留出尽可 能多的空间, 这样往往会浪费很多内存空问, 而且 对字符串的排序等操作也很麻烦。用指针数组来 定义时, 就不必了解每个字符串的长度, 只要用指 针数组中的元素分别指向它们, 不浪费内存空问, 而且对字符串排序时, 不必改动字符串的位置, 只 需改变指针的指向, 从而大大提高程序的效率。这 个知识点在教学中应注意使学生区分指针数组和 数组指针两个概念。尤其在定义时要注意书写规 范, 不能把指针数组与数组指针的定义混淆。 1.3.4 指向指针的指针。指向指针的指针变量 的一个定义形式为:char **p; 表示指针变量 P 指 向字符指针变量, 或者说 P 所指向的是一个地址。数组指针适用于列宽确定, 行需要动态生 成的场合。指针数组适用于行数确定, 列需要动态 生成的场合。指向指针的指针适用于行列均需要 动态生成的场合。 FurtherDiseussionontheMulti一dimensionalArray Pointeh ofCLanguageLearning C语言多维数组与指针的探讨一、相关知识与概念: 变量的指针:变量在内存中存放的地址。 指针变量:存放变量地址的变量,用来指向另一个变量。 数组:有序数据的集合。数组中的每一个元素都属于同一个数据类型。 数组的指针:数组在内存中存储的起始地址。 数组元素的指针:数组元素在内存中存储的地址。 乙运算符:取地址运算符。翻为变量:的地址。 一运算符:指针运算符(或称为“间接访问”运算符)。`1Ponietr为指针变量i一Pointer所指向变 量的存储单元。 对于二维数组a,可得到下面几个公式: 数组的起始地址:a一a〔0〕~肠[0」〔0」一’a; 第i行起始地址:a〔i]=’(a+i)=腼[i]仁。〕; 数组元素a〔ij〔j〕的地址:阮〔i」〔j」=a[i〕+J=’(a+i)+j; 数组元素a仁i」〔j〕:a〔i〕〔j〕~`(a仁i〕+j)一’(’(a+i)+j); 在计算机内存中存储二维数组是按行存储的,所以知道二维数组的首地址后,数组变量a及具有与 a相同基类型的指针变量Pa,也可以找到其中任意元素的地址:执行Pa二a后,a〔ij[j〕一’(Pa十i’

文档评论(0)

fzhuixlu + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档