English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

一.有一陣列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 電腦與網際網路 程式設計

3 個解答

記憶體中位址會因不一樣的硬體而不同
每種晶片都會為不同的功能而有不一樣的構造
像你說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

fedest.com, questions and answers