跟刷代码随想录-数组理论篇

67 阅读1分钟

代码随想录算法训练营Day-01| LeetCode704. 二分查找 、 LeetCode 27. 移除元素、 LeetCode977.有序数组的平方

数组理论基础
文章链接->

浅层回答:

  • 数组是存放在连续内存空间上的相同类型数据的集合

数组内存空间的地址是连续的,所以在增删改查方面不够灵活

  • 数组的元素是不能删的,只能覆盖 (类似往前挪的感觉)

又因为 不同编程语言的内存管理是不一样的

1.在c++里面二维数组是连续分布的

2.而java也不对程序员暴露元素的地址,寻址操作完全交给虚拟机的 所以java二维数组的每一行头结点的地址是没有规则的,更谈不上连续,随机的,这有点像c语言里面指针数组的概念,是指针变量的集合,应用于字符串的处理比较广泛 例如:

char *p[3]={"Basic","C++","pascal");

再次必须得奉上一张绝女 少图片! zhizhen.png 感想&解释一下:指针数组元素p[0]指向"Basic",以此类推,对于指针数组来说各个字符串并不是连续存储的,每行存储一个字符串(有长有短),也不占用多余内存空间。而在这里有引出了二维字符数组,他的各字符串 占用相同大小的存储空间,并且存在一片连续的存储单元中 javaerwei.png 最后小声逼逼:原来java没有指针啊🤔,虚拟机?希望明天你能搞懂!