• 沒有找到結果。

陣列在記憶體中的配置

N/A
N/A
Protected

Academic year: 2021

Share "陣列在記憶體中的配置"

Copied!
6
0
0

加載中.... (立即查看全文)

全文

(1)

第二章 陣列 (ARRAYS)

(2)

一維陣列

(ONE-DIMENSIONAL ARRAY)

 若C語言宣告: int a [5];  整數佔 4 個位元組(byte),則陣列 a 共需 20 位元組。  假設陣列之名稱變數 a 記錄陣列的啟始位址1000,則 陣列在記憶體中的配置情形如下: 啟始 位址 1000 1004 1008 1012 1016

(3)

隨機存取元素值

C 語言宣告陣列如下: int b[20]; 若陣列的起始位址為 1000,則 (1) 元素 b[10] 的起始位址為 1000 + 4 * 10 = 1040 (2) 元素 b[i] 的起始位址為 1000 + 4 * i 1000 1004 … … 1040 … ? … b[0] b[1] … b[9] b[10] … b[i] … b[19] 4 * 10 4 * i 起始位址

(4)

範例

若陣列 c 有 n 個元素,索引從 0 開始,每個元

素佔 d 個位元組空間,且陣列的起始位址為

則 c[i]的起始位址為何?(i為整數,0<=i<n)

解:

c[i]起始位址為

+i*d

0 1 … … i … … n-1 i*d 起始位址為 起始位址為 +i*d 索引

(5)

範例

若宣告為 int c[200]; 已知 c[100]的起始位址為(102A)16, 求 c[125]的起始位址? 解: 0 1 100 125 n-1 4*25 起始位址 102A16 起始位址為 102A16+(4*25)10 索引 所以 c[125]的起始位址為 102A16+(4*25)10 = 108E16

(6)

二維陣列

(TWO-DIMENSIONAL ARRAY)

C 語言是以列為主序 (row major) 的方式 循序存放二維陣列,例如: int a[3][4]; 行 列 0 1 2 3 0 a[0][0] a[0][1] a[0][2] a[0][3] 1 a[1][0] a[1][1] a[1][2] a[1][3]

2 a[2][0] a[2][1] a[2][2] a[2][3] a[2][3] +48

+44 a[2][2] +40 a[2][1] +32 a[2][0] 列2 +28 a[1][3] +24 a[1][2] +20 a[1][1] +16 a[1][0] 列1 +12 a[0][3] +8 a[0][2] +4 a[0][1]  a[0][0] 列0 起始位址

參考文獻

相關文件

此位址致能包括啟動代表列與行暫存器的 位址。兩階段的使用RAS與CAS設定可以

[r]

MOV reg,data reg ← data 轉移立即資料(data)到暫存器 reg 內 MOV dreg,sreg dreg ← sreg 轉移暫存器 sreg 的內容到暫存器 dreg MOV segreg,reg segreg ← reg

ðWinner winner, chicken

3.結論-(1)記憶的歷程分為短期記 憶、長期記憶(2)短期記憶經選擇 與複習成為長期記憶(3)短期記憶

[r]

下列關於 CPU 的敘述,何者正確?(A)暫存器是 CPU 內部的記憶體(B)CPU 內部快取記憶體使 用 Flash Memory(C)具有 32 條控制匯流排排線的 CPU,最大定址空間為

 NULL 不指向任何地方,故不會有值,所 以對 NULL