記憶體間隔計算
Prerequisites:
計算間隔1
指標指向0x00000001,若要指向0x00000005,請問指標要移動幾格?
假設指標在0x00000005的位址,計算0x00000005到0x00000001之間有幾個間隔,不包含0x00000005
答案:0x00000005 - 0x00000001 = 4個間隔
0x00000001 | 0x00000002 | 0x00000003 | 0x00000004 | 0x00000005 |
^ |
計算間隔2
指標指向0x00000001,若要指向0x00000011,請問指標要移動幾格?
把位址全變成10進位,比較好計算。
假設指標在11的位址,計算11到01之間有幾個間隔,不包含11
答案: 11 - 01 = 10個間隔
位址 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
xml | < |
n | a | m | e | > |
C | i | c | i | < |
/ |
n | a | m | e | > |
指標 | ^ |
以下10個間隔,只想取出Cici四個間隔,要如何取?
10個間隔 - 2個括號<>
- name
4個字元 = 4
位址 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
xml | < |
n | a | m | e | > |
C | i | c | i |
指標 | x | x | x | x |
計算間隔3
位址 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
字串 | y | y | y | y | o | o | o | o | y | y |
str指標 | str | |||||||||
p指標 | p |
計算p指標位址與str指標位址,不包含p指標,總共有多少間隔?
答案:5 - 1 = 4個間隔
yyyyooooyy
字串長度為10,扣掉最左邊yyyy,只要右邊ooooyy的6個字元,數學公式如何寫?
步驟1: strlen(yyyyooooyy
) = 10 ,字串長度為10
步驟2: 取出p指標與str指標之間有多少間隔,不含p指標,p(5) - str(1) = 4個間隔
步驟3: 步驟1答案(10) - 步驟2答案(4) = 6個字元
指標移動間隔
位址 | 01 | 02 | 03 | 04 | 05 | 06 | 07 |
---|---|---|---|---|---|---|---|
字串 | 1 | 2 | 3 | z | z | z | 0 |
移動前 | find | ||||||
移動後 | find+3 |
find的位址在01
find + 3的意思是,find指標往右移動3格,移到04的位址。