代码随想录算法训练营Day-01| LeetCode704. 二分查找 、 LeetCode 27. 移除元素、 LeetCode977.有序数组的平方
数组理论基础
文章链接->
浅层回答:
- 数组是存放在连续内存空间上的相同类型数据的集合
数组内存空间的地址是连续的,所以在增删改查方面不够灵活
- 数组的元素是不能删的,只能覆盖 (类似往前挪的感觉)
又因为 不同编程语言的内存管理是不一样的
1.在c++里面二维数组是连续分布的
2.而java也不对程序员暴露元素的地址,寻址操作完全交给虚拟机的
所以java二维数组的每一行头结点的地址是没有规则的,更谈不上连续,随机的,这有点像c语言里面指针数组的概念,是指针变量的集合,应用于字符串的处理比较广泛
例如:
char *p[3]={"Basic","C++","pascal");
再次必须得奉上一张绝女 少图片!
感想&解释一下:指针数组元素p[0]指向"Basic",以此类推,对于指针数组来说各个字符串并不是连续存储的,每行存储一个字符串(有长有短),也不占用多余内存空间。而在这里有引出了二维字符数组,他的各字符串 占用相同大小的存储空间,并且存在一片连续的存储单元中
最后小声逼逼:原来java没有指针啊🤔,虚拟机?希望明天你能搞懂!