码迷,mamicode.com
首页 > 其他好文 > 详细

列表存储的两种形式

时间:2018-04-27 23:49:44      阅读:818      评论:0      收藏:0      [点我收藏+]

标签:.com   height   mil   第一步   就是   情况   结构   info   com   

1.顺序表结构

32位的操作系统每个存储空间占四个字节。

然后列表中同类型的数据的元素的地址是相连的比如下图

[200,390,78,1212]

假设第一个元素的地址的0x27(x表示的是十六进制),下一个元素的地址就是0x27+*4Bytes=0X31  (每个元素会占用4个位置)

所以以此类推 每块元素存储空间的地址分别为:0x27,0x31,0x35,0x39.

当把Li这个列表赋值给一个元素的时候 实际上是这个变量,指向首个元素的地址。

Li=[200,390,78,1212]

,当引用下标取元素的时候,表示的是一个推移量,比如取Li[2],首先第一步获取Li的内存地址0x27然后往后推移二个得到0x27+2x4Bytes=0x35,也就是对应下图的第三个元素。

也就是说下标实际上是一个推移量的表示。

 

2.元素外置(索引取得是地址的地址)

如下列表[1,"ok",1.111,2333]]

当列表里的元素不是同等类型的时候,此时的内存地址也是不连续的,此时的地址存储情况和上述的有所不同,首先对每个元素分配好空,但是并不连续,然后再把内存地址作为数据

存到另外的空间的,一个内存地址占用四个字节,这时候内存地址的数据占用的四个空间的地址是连续的。然后

此时的取值顺序就是成了,首先获取内存地址数据所在的空间的内存地址,然后找到相应的内存地址对应的元素。

技术分享图片

技术分享图片

 

列表存储的两种形式

标签:.com   height   mil   第一步   就是   情况   结构   info   com   

原文地址:https://www.cnblogs.com/c-x-a/p/8964990.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!