第六章复合数据类型.docxVIP

  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文档。上传文档
查看更多
第六章 复合数据类型 变量和赋值的进一步讨论 一个变量是由四个要素组成的: 一个名字、一个属性、一个关联和一个值。 名字指命名变量 的标识符; 属性指变量可以存放那种类型的值; 关联指存放变量的内存位置; 值指该内存位 置当前时刻存放的数据。该文档为文档投稿赚钱网作品,版权所有,违责必纠 应该认识到这里的值是可能改变的, 但任何时候在盒子里总有一个值 (我们将无定义的随机 值也当做一个特殊的值) 。该文档为文档投稿赚钱网作品,版权所有,违责必纠 根据变量在赋值运算中的使用方式,将变量的关联部分称为左值,变量的值部分称为右值。 对于表达式而言, 求值结果也存在是否可作为左值使用的问题。 一般情况下, 表达式的求值 结果作为右值使用,但如果一个表达式的求职结果不是 void 类型,并且指派了一个变量, 则该表达式可作为左值。该文档为文档投稿赚钱网作品,版权所有,违责必纠 ((i0)?i:j)=1 .//合法的赋值运算 (i+j) =1 //不合法的赋值运算 指针类型 变量以两种方式被使用:作为一个关联的名字和作为一个值的名字。 对变量的访问也有两种方式:直接访问和间接访问。该文档为文档投稿赚钱网作品,版权所有,违责必纠 在 C++ 中实现对变量的间接访问的方法是: 先安排相关变量, 专门用于存放变量地址。 要间 接访问时, 先从这些变量获得待访问的变量的地址, 然后再按所获得的地址去访问要访问的 变量。该文档为文档投稿赚钱网作品,版权所有,违责必纠 指针是存放其他变量地址的变量, 所以从效果上看它们指向这些数据。 指针使得数据不一定 非得与某一特定变量名字相关联,指针可以指向一个没有名字的数据值。该文档为文档投稿赚钱网作品,版权所有,违责必纠 6.2.1 指针的声明 int age = 30; //声明一个存放年龄的整数类型变量 让C++编译程序知道有一个新的变量,该变量的名字是标识符 age,编译程序会为它分配 2该文档为文档投稿赚钱网作品,版权所有,违责必纠 个字节的存储空间(假如我们使用的机器上 int 用两个字节表示)并将 30放在这些字节中, 并且编译程序知道这些字节中存放的是整数类型数值而不是浮点类型或其他类型数据。该文档为文档投稿赚钱网作品,版权所有,违责必纠 不直接访问age的存储空间地址,而是用 age这个名字访问器其存储空间。 ptr 常用作 pointer 的缩写 指针类型是在其他数据类型后加一个类型修饰符“ *”,这个类型被称为指针的基类型。如该文档为文档投稿赚钱网作品,版权所有,违责必纠 int * age_ptr; 注意“ *”仅用于修饰类型,而不是变量名字的一部分。 一个指针变量占用的存储空间大小取决于机器的内存寻址方式。 指针age_ptr的类型(int*)指明age_ptr仅能指向整数类型的值,而不能指向字符类型、浮点 类型或其他类型的值,即age_ptr中存放的地址所指向的存储空间中只可存放整数类型的值。该文档为文档投稿赚钱网作品,版权所有,违责必纠 将“ * ”与类型名写在一起表明 int* 是一种复合类型,但要注意 Int * p,q; 声明的却是一个整数类型的指针变量 p 和一个整数类型变量 q 如果把“ *” 和指针变量写在一起,则可以连续声明几个指针变量。例如: int *p,*q,*k;该文档为文档投稿赚钱网作品,版权所有,违责必纠 注意(int *)并不能作为一个类型来使用,例如 (int *) ptr;并不是一个声明,编译程序会将它理该文档为文档投稿赚钱网作品,版权所有,违责必纠 解为类型转换。 6.2.2 指针的引用 “ ”运算符放在操作数前面,操作数必须是一个变量名,表示取出操作数的存储空间地 址; ”*”运算符也放在操作数前面,操作数必须是一个指针变量,表示取出指针所指向存储 空间中保持的值。在一个指针变量前面加上“ *”有两种情况:一是声明一个指针变量,此 时作为类型修饰符;二是访问指针变量所指向的变量的值,此时作为一元运算符。该文档为文档投稿赚钱网作品,版权所有,违责必纠 空指针是值为 0x00 的指针变量,许多编译程序提供的函数库中定义了一个空指针名字该文档为文档投稿赚钱网作品,版权所有,违责必纠 NULL,其作用相当于 0x00,赋值语句: ptr=NULL; 相当于 ptr=0; int *ptr; 声明指着 ptr 时没有初始化它,所以 ptr 中存放的值是不确定的,它随机地指向某一内存区 域(这个区域的内容可能很关键) 。如果为初始化 ptr 就使用它:该文档为文档投稿赚钱网作品,版权所有,违责必纠 *ptr = 250; 那么存放 250 的两个字节将可能会写入内存中的关键区域。 C++ 语言在编译与运行时都不报 告这种错误, 这种错误在程序开发后期才能被发

文档评论(0)

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

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

1亿VIP精品文档

相关文档