1. 程式人生 > >列表存儲的兩種形式

列表存儲的兩種形式

family 技術分享 內存 height 表結構 下列表 順序表 成了 空間

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]]

當列表裏的元素不是同等類型的時候,此時的內存地址也是不連續的,此時的地址存儲情況和上述的有所不同,首先對每個元素分配好空,但是並不連續,然後再把內存地址作為數據

存到另外的空間的,一個內存地址占用四個字節,這時候內存地址的數據占用的四個空間的地址是連續的。然後

此時的取值順序就是成了,首先獲取內存地址數據所在的空間的內存地址,然後找到相應的內存地址對應的元素。

技術分享圖片

技術分享圖片

列表存儲的兩種形式