第5章_Cx51构造数据类型.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文档。上传文档
查看更多
第5章_Cx51构造数据类型

第5章 Cx51构造数据类型 5.1 数 组 5.2 指 针 5.3 结 构 5.4 联 合 5.5 枚 举 5.1 数 组 5.2 指 针 指针 5.3 结 构 习题参考答案(P.123) 习题1. 10个元素的int数组要有多少字节?它们是低位字节一组,然后高位字节一组,还是字对齐?若数组在2020H开始放置,在哪个位置能找到[5]的2个字节? 习题2. 写出二维数组Data[2][4]的各个元素,按它们在内存中存储的顺序排列。 习题4. 8051中不同的存储空间是什么?同一地址可以表示不同的空间吗? 习题7. 指针的存储类型和数据类型的意义是什么?指针本身的数据类型如何确定? 习题9. 写出下列数组使用*运算的替换形式。 1.data[2]; 2.num[i+1]; 3.man[5][3]。 习题10. 设下列运算表达式中p是指针,试分析各表达式的运算顺序。 1.b=*p--; 2.x=*p++; 3.a[++i]=*p++ ; 4.y=*--*++p-6。 习题12. 结构的定义和说明在程序中的作用是什么?在对结构初始化时应该注意些什么问题。 习题14. 使用union的目的是什么?定义union,它用于容纳下列数据: int data[4]; char ch[8]; float f。 答: 1、data+2 2、num+i+1 3、*(*(man+5)+3) 答: 1、先取*p给b,再使p减1单元(注意不是*p减1单元); 2、先取*p给x,再使p加1单元(注意不是*p加1单元); 3、先使i加1,再取*p给a[i],再使p加1单元; 4、这里p必须是指针的指针,先使p加1单元,再使*p减1单元,再使*(*p)减6后赋给y; 答: 结构的定义和说明在程序中可以把一组关系密切的变量存放在一个连续的存储空间中,便于对这些变量的访问。同一个结构中不能存在同名变量名称。 可以把具有相同结构的已知结构直接用“=”对结构进行赋值,或者通过其成员的逐个引用分别赋值。在没有赋值前结构成员的值是不确定的,有可能被编译器启动代码初始化为0。 答: union data_type { int data[4]; char ch[8]; float f; }mydata; 使用union的目的之一是若干个不会同时使用的变量公用存储单元,以便节省存储空间。同一个union中不能存在同名变量名称。 3.关于指针变量的运算 对于数组a[10]和同类型指针变量p=a: p++(或p+=1) 该操作将使指针变量p指向下一个元素,即a[1],若再执行x=*p则将取出元素a[1]赋值给x。 该操作还有跟使用环境有关: int *b=p++; 则表示先把指针p的当前值赋给指针变量b,然后指针变量p指向下一个元素。 *p++ 由于运算符++和*的优先级别相同,而结合方向对p来说自右向左,所以该运算先执行 p++ ,然后再执行*p 。 int b=*p++; 则相当于两条语句: int b=*p; p++; *p++与*++p不同 前者在使用p后进行p的自加,而后者则是在使用p前就进行p的自加: int a[10]; int *p=a; int b=*p++; int c=*++p; 前者得到的b为a[0],而后者得到的为a[1],p在两种运算中最后的结果相同,都指向第二个元素a[1] 。 (*p)++ 作用是对指针变量p所指向的值即*p执行自加运算,结果不影响指针p,但是影响p所指的数组的元素的值。 若p指向数组元素中第i个元素: *p--与a[i--]等价; *++p与a[++i]等价; *--p与a[--i]等价; 5.2.3 指向多维数组的指针和指针变量 p=a指向数组a的第一个数组元素的地址后: p+1和a+1等价指向数组a的第1行首元素地址; p+2和a+2等价指向数组a的第2行首元素地址; 。 。 。 *(p+1)+3和a[1][3]等价指向a[1][3]的地址; *(*(p+1)+3)和a[1][3]等价标示a[1][3]的值。 下面以二维数组为例来说明多维数组的指针和指针变量的使用方法: main() { int a[3][4]={1,3,5,7, 9,11,13,15, 17, 19,21, 23} int (*p)[4], i, j; //指向一个包含4个元素的一维数组 p = a; //初始

文档评论(0)

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

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

1亿VIP精品文档

相关文档