什么是数组?数组元素与存储单元的对应关系是怎样的?

兄弟们,请讲解下,什么是数组?数组元素与存储单元的对应关系是怎样的?
最新回答
小时候

2024-04-17 18:16:24

数组就是存储一堆数据的存储结构。(可是是整数,可以是字母,甚至,多元数组还可以存储字符串)

数组里的元素是连续的。所以相邻的存储单元的存储地址是连着的。
这也是后面为什么指针可以来代替数组处理问题的原因。
比如a[0]和a[1]的存储单元地址是连续的
七喵

2024-04-17 16:42:58

数组就是相同类型数据的集合。简单说数组的数学意义就是“集合”。
例如:int a[5];就是拥有5个元素的数组,每个元素都是整型的;因为整型数据在内存中占用2个字节,所以整个数组占用10个字节的存储空间。系统为这5个整型数据连续开辟10个字节的存储空间。
当风起时

2024-04-17 05:06:14

要想理解数组元素与存储单元的对应关系 你需要理解数组是怎样存储的!
举例分析:(32位系统,小端存储)
int a[3] = {0x12345678, 0x87654321, 0x56789123};

首先,给数组分配其所需空间 (分配12个字节)!
然后,在此空间最低的地址存储第一个元素0x12345678 再存储0x87654321,最后存储 0x56789123!
最后解释一下每个元素的存储:存储元素时,顺序是按字节从低到高
即:对于0x12345678 先存储78 最后存储12
ー別經哖ぴ

2024-04-17 05:47:31

答案是
loc(a[0][0])
+
(i
*
n
+
j)
*
k
因为是采用行序为主方式存储的,即先存第1行,再第2行、第三行……这样。
所以a[i][j]前面有i行元素,每行元素有n个;a[i][j]为本行第j+1个元素,本行有j个元素位于a[i][j]前,所以a[i][j]到数组的起始位置处,中间共有i
*
n
+
j个元素,每个元素占k个存储单元,所以就是loc(a[0][0])
+
(i
*
n
+
j)
*
k