博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每日一练(三十六)
阅读量:3950 次
发布时间:2019-05-24

本文共 1135 字,大约阅读时间需要 3 分钟。

文章目录

2.21线性表

线性表是一种逻辑结构;

顺序表、链表是一种存储结构;

在这里插入图片描述

2.22 对称矩阵的压缩

画图比较直观

在这里插入图片描述

2.23 求二维数组元素存放地址

在这里插入图片描述

要明白行优先存储和列优先存储的区别!!!

在这里插入图片描述

2.24 二维数组转指针

在这里插入图片描述

2.25 取出三维数组中的元素

在这里插入图片描述

要求这里是按顺序取出三维数组中的元素,数组的下标不是顺序的,所以要进行运算之后才是对应位置的。

首先三维数组分为两组,所以第一个[]中应该是将12分为两组,而且范围限制是2,则[i/6]

然后是中间的[],分为四组,范围是2,则[i/3%2]

最后是[i%3],答案是a[i/6][i/3%2][i%3]

2.26 利用指针取数组元素的判断

在这里插入图片描述

选:A、C

对于这种类型的,统一转换为数组下标的形式:*(a+1) = a[1],指向a[1][0];所以**(a+1)+2相当于a[1][0]+2 = 6+2 = 8。所以AC正确。

*(a[1]+1) = a[1][1] = 8,D选项,虽然a[0]a的值相等,但是一个是指针变量,一个是地址常量,肯定是不一样的,而且a[0]的数据类型是int [3],a的数据类型是int (*)[3]

2.27 类型转换后的指针运算

在这里插入图片描述

很明显这里考察的是强制类型转换之后的指针运算,前面说了指针的运算是建立在数据类型的基础上的,数据类型有多大,指针+1就移动多大的内存。

*(char*)((char*)(cur)+2)根据优先级,cur是先结合(char*)cur,然后再+2,也就是先强转为char型的,再移动两个char的内存,然后再取出地址中的值转换为char类型,输出,那cur本来指向‘a’,运算之后就是c

*(char*)(cur+2),首先+2,此时cur还是结构体的数据类型,所以+2之后指向obj_array[2],即指向g的地址,所以取值转换为char之后输出就是g

所以最终输出cg

2.28 64位环境下的指针运算

在这里插入图片描述

//a、p1、p2都指向数组首地址,且三者的作用相同,数据类型都是 int(*)[4]*(*(a+1)-1) = a[1][-1] = a[0][3] = 4*(*(p1+3)-2)+1 = p1[3][-2] + 1 = a[2][2] + 1 = 1101*(*(p2-1)+16)+2 = p2[-1][16] + 2 = a[-1][16] + 2 = a[3][0] + 2 = 13002//p3是一个int指针指向数组首地址 p1是一个指针,指针的大小由系统决定,这里是64位系统,所以为8Byte*(p3+sizeof(p1)-3) = *(p3+5) = a[0][5] = 604 1101 13002 60

转载地址:http://gxwzi.baihongyu.com/

你可能感兴趣的文章
如何画思维导图?
查看>>
数据库范式简单讲解(1NF、2NF、3NF、4NF、BCNF)
查看>>
快速阅读——《技能篇》
查看>>
快速阅读——《应用篇》
查看>>
活锁、死锁和饥饿
查看>>
进制转换
查看>>
【UML】静态视图分析示例
查看>>
【UML】动态视图分析示例
查看>>
【UML】开发过程应用
查看>>
【UML】四大关系篇
查看>>
行是知之始,知是行之成
查看>>
软件开发文档小结
查看>>
【UML】开发文档应用
查看>>
【UML】类图与用例图关系解析
查看>>
【SLA】理论学习阶段小结
查看>>
【C#】视频学习笔记(三)
查看>>
Power English 初始学习篇
查看>>
Mini Story 的正确打开方式
查看>>
【设计模式】基础篇
查看>>
【设计模式】六大设计原则篇
查看>>