第9章 指针(汪同庆).pptVIP

  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文档。上传文档
查看更多
第9章 指针(汪同庆)

第九章 指针 简介 指针 功能强大,不易掌握。 用来模拟引用传递。 与数组和字符串关系密切。 可以创建和操作动态的数据结构: 链表 队列 栈 树 指针的概念 指针就是内存对象的地址。 内存对象包括:变量,数组,函数等。 C语言允许直接通过地址来处理数据。 内存对象的地址 变量的地址 用取地址运算符()获得变量在内存中的地址。 数组的地址 即第一个元素的地址,用数组名表示。 函数的地址 用函数名表示。 指针变量 指针变量就是保存内存地址的变量。 指针变量 指针变量的声明 类型说明符 * 指针变量名; * 表示 x_pointer 是一个指针变量 x_pointer 是 int* 类型的指针,读作: 指向 int 型数据的指针 指向整型对象的指针 指针可以声明为指向任何数据类型的对象 声明多个指针时,每个变量前都必须有 * 指针变量 指针变量的初始化 在声明语句中为指针变量指定初值。 指针变量可以被初始化为 0 ,NULL 或 一个地址量。 0 和 NULL 是等价的(用NULL更好) NULL 是在stdio.h(和几个其他头文件)中定义的符号常量 取地址运算符 取地址运算符: 返回变量在内存中的地址。 指针运算符 指针运算符:* 返回指针变量所指向的对象的别名。 *yPtr 就是 y ,因为 yPtr 指向 y。 可以用在赋值语句中。 案例分析:指针运算符 指针运算符 案例分析:指针运算符 指针运算符 运行结果 指针作为函数的参数 指针作为函数的参数用来模拟引用传递。 用指针变量作为函数的形式参数。 调用函数时,用 运算符把实际参数的地址传递给函数。 在被调用函数中,用 * 运算符间接引用实际参数。 案例分析:指针参数 问题:计算任意整数的立方。 值传递:callByValue() 案例分析:指针参数 问题:计算任意整数的立方。 值传递:callByReference() 案例分析:指针参数 问题:计算任意整数的立方。 结果分析 案例分析:指针参数 问题:交换两个变量的值。 哪一种实现是正确的? 指针运算 指针可以参与以下运算: 赋值运算 给指针变量赋值 关系运算 两个指针之间的比较 算术运算 加(减)一个整数 两个指针相减 指针运算 指针的赋值运算 可以把指针赋给同类型的指针变量。 指针运算 指针的赋值运算 把指针赋值给类型不同的指针变量时要进行类型转换。 但 void * 类型的指针是一个例外。 指针运算 指针的赋值运算 比较两个指针的值。 指针运算 指针的算术运算 自增自减(++,--) 加上一个整数(+,+=,-,-=) 两个指针相减 指针运算 指针的算术运算 举例 指针运算 指针的算术运算 举例 指针与数组 数组和指针关系密切。 数组名是一个指针常量。 数组指针:指向数组的指针。 数组指针可以用来完成任何涉及数组下标的操作。 将 bPtr 的值置为数组 b 中的第一个元素的地址 bPtr = b; 等价于 bPtr = b[0]; 指针与数组 数组和指针关系密切。 引用数组元素的表达式 数组元素 b[3] 可以用 *(bPtr + 3) 来引用 3是偏移量 这种表示法称为指针偏移量表示法 还可以用 bPtr[3] 来引用 称为指针下标表示法 与 b[3] 相同 还可以用 *(b + 3) 来引用 指针与数组 数组和指针关系密切。 引用数组元素的表达式 指针与数组 数组和指针互换使用时的注意事项 数组名是一个指针常量。 指针与数组 数组和指针互换使用时的注意事项 注意指针变量的值。 指针与数组 数组和指针互换使用时的注意事项 注意运算符的优先级。 指针与数组 数组参数的值传递 形参数组是一个指针变量。 指针数组 数组元素是指针的数组 类型说明符 *数组名[常量表达式]; 常用来构造字符串数组。 注意: 字符串并不在 suit 数组中。 suit 数组只包含指向字符串的指针。 案例分析:指针数组 问题:洗牌和发牌的模拟 定义数据结构 字符串(指针)数组 suit 保存牌的花色名 字符串(指针)数组 face 保存牌的号码 二维数组 deck 表示一副牌,行对应花色,列对应号码 保存洗牌后牌的序号 案例分析:指针数组 问题:洗牌和发牌的模拟 设计算法 算法的顶部 第一次细化 案例分析:指针数组 问题:洗牌和发牌的模拟 设计算法 第二次细化 案例分析:指针数组 问题:洗牌和发牌的模拟 设计算法 第三次细化 案例分析:指针数组 问题:洗牌和发牌的模拟 源代码 案例分析:指针数组 问题:洗牌和发牌的模拟 源代码 案例分析:指针数组 问题:洗牌和发牌的模拟 源代码 案例分析:指针数组 问题:洗牌和发牌的模拟 源代码 指针 char *suit[4]

文档评论(0)

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

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

1亿VIP精品文档

相关文档