数组理论基础"/>
数组理论基础
数组的理论基础
- 数组是非常基础的数据结构
- 一维数组:
- 二维数组:
数组是非常基础的数据结构
一维数组:
首先,要知道数组在内存中的存储方式,数组是存放在连续内存空间上的相同类型数据的集合
需要注意的两点是:
- 数组下标都是从0开始的。
- 数组内存空间的地址是连续的
数组的元素是不能删除的,只能覆盖。
二维数组:
二维数组在内存空间的地址是怎么样的呢?
不同编程语言的内存管理是不一样的,首先以C++为例,我们来做一个实验,C++测试代码如下:
void test_arr() {int array[2][3] = {{0, 1, 2},{3, 4, 5}};cout << &array[0][0] << " " << &array[0][1] << " " << &array[0][2] << endl;cout << &array[1][0] << " " << &array[1][1] << " " << &array[1][2] << endl;
}int main() {test_arr();
}
测试地址为:
0x7ffee4065820 0x7ffee4065824 0x7ffee4065828
0x7ffee406582c 0x7ffee4065830 0x7ffee4065834
由地址可知,C++中二维数组在内存空间地址是连续的
像Java是没有指针的,同时也不对程序员暴露其元素的地址,寻址操作完全交给虚拟机。
所以看不到每个元素的地址情况,这里我以Java为例,也做一个实验。
public static void test_arr() {int[][] arr = {{1, 2, 3}, {3, 4, 5}, {6, 7, 8}, {9,9,9}};System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);System.out.println(arr[3]);
}
地址输出:
[I@7852e922
[I@4e25154f
[I@70dea4e
[I@5c647e05
}
这里的数值也是16进制,这不是真正的地址,而是经过处理过后的数值了,我们也可以看出,二维数组的每一行头结点的地址是没有规则的,更谈不上连续。
更多推荐
数组理论基础
发布评论