一.有一陣列int A[50](假設sizeof(int)=2)
A.此陣列共佔多少位元組?
B.若A[0]在記憶體中的位址為03C4(十六位元),則元素A[12]的位址為何?
C.若A[31]在記憶體中的位址為10E9(十六位元),則元素A[40]的位址為何?
二.有一二維浮點數陣列floatA[18][20](假設sizeof(float)=4)
A.此陣列共佔多少位元組?
B.若A[0][0]在記憶體中的位址為03C4(十六位元),則元素A[5][13]的位址為何?
2006-11-15 09:34:55 · 3 個解答 · 發問者 ? 1 in 電腦與網際網路 ➔ 程式設計
記憶體中位址會因不一樣的硬體而不同
每種晶片都會為不同的功能而有不一樣的構造
像你說sizeof(int) = 2
如果是平常的PC, sizeof(int) 應該是 4 ,所以顯然的部不一樣的構造
(平常sizeof(float) 好像是8吧)
不過一般來說, 記憶體會從低寫到高
sizeof(int) = 2 意思是int的大小是 2 bytes (16bits)
A[0] 的位址是03C4的話
A[12] 的位址會在 03C4 + 12*sizeof(int)
也就是03DE
A[31] 的位址是10E9的話
A[40] 的位址會在 10E9 + 9*sizeof(int) = 10FB
float A[18][20]
sizeof(A) = 18*20*sizeof(float) = 1440 bytes
A[0][0] 的位址是03C4的話
A[5][13] 的位址是 03C4 + 5*20*sizeof(float) + 13*sizeof(float)
=03C4 + 0190 + 0034 = 0588
*Windows 的小算盤可以算16進位喔
2006-11-15 15:17:14 補充:
沒看到1A, 答案是50*sizeof(int) = 100
2006-11-15 15:20:20 補充:
1B 是 03DC
2006-11-15 10:15:43 · answer #1 · answered by Ryan 3 · 0⤊ 0⤋
C 定義很清楚:
sizeof(int) = CPU 的 bits 數 / 8
所以,
16 位元的 CPU,sizeof(int) = 2
32 位元的 CPU,sizeof(int) = 4
64 位元的 CPU,sizeof(int) = 8
float 和 double 是由 IEEE 定義的,sizeof(float) = 4, sizeof(double) = 8
2007-01-23 05:24:06 補充:
陣列大小,那要看老師的定義:
存陣列的部份,那是 18 * 20 * 4 = 1440 沒錯
但,它還要有個一維陣列來 handel 二維,它的大小是 18 * sizeof (*)
另外還要有個 pointer 來指向那個一維陣列,大小是 sizeof(*)
所以,全部需要:1440 + 19 * bus_size
2007-01-23 05:26:03 補充:
抱歉,是handle, 不是 handel
2007-01-23 00:21:08 · answer #2 · answered by ? 7 · 0⤊ 0⤋
一.
A. 100 位元組
B. 03DC
C. 10FB
二.
A. 1440 位元組
B. 0588
2006-11-15 10:09:04 · answer #3 · answered by ? 2 · 0⤊ 0⤋