列表存儲的兩種形式
阿新 • • 發佈:2018-04-28
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]]
當列表裏的元素不是同等類型的時候,此時的內存地址也是不連續的,此時的地址存儲情況和上述的有所不同,首先對每個元素分配好空,但是並不連續,然後再把內存地址作為數據
存到另外的空間的,一個內存地址占用四個字節,這時候內存地址的數據占用的四個空間的地址是連續的。然後
此時的取值順序就是成了,首先獲取內存地址數據所在的空間的內存地址,然後找到相應的內存地址對應的元素。
列表存儲的兩種形式