数组理论基础

编程入门 行业动态 更新时间:2024-10-10 05:20:44

<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组理论基础"/>

数组理论基础

数组的理论基础

  • 数组是非常基础的数据结构
  • 一维数组:
  • 二维数组:

数组是非常基础的数据结构

一维数组:

首先,要知道数组在内存中的存储方式,数组是存放在连续内存空间上的相同类型数据的集合
需要注意的两点是:

  • 数组下标都是从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进制,这不是真正的地址,而是经过处理过后的数值了,我们也可以看出,二维数组的每一行头结点的地址是没有规则的,更谈不上连续。

更多推荐

数组理论基础

本文发布于:2024-03-07 22:46:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1719112.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   理论基础

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!