数组理论基础

  1. **数组定义**:
  • 数组是存放在连续内存空间上的相同类型数据的集合。
  1. **数组特性**:
  • 数组下标从0开始。

  • 数组的内存空间地址是连续的。

  1. **数组操作**:
  • 数组可以通过下标索引快速访问元素。

  • 数组元素的删除或添加可能需要移动其他元素,因为内存地址连续。

  1. **数组元素移动示例**:
  • 删除数组中某个元素时,需要移动该元素之后的所有元素。
  1. **C++中数组与vector的区别**:
  • C++中的`vector`底层实现是数组,但`vector`是容器,不是数组。

  • 数组的元素不可删除,只能被覆盖。

  1. **二维数组**:
  • 二维数组在内存中的存储方式,不同编程语言可能不同。
  1. **C++中二维数组的连续性**:
  • C++中二维数组的内存地址是连续的,通过测试代码和内存地址可以验证这一点。
  1. **Java中二维数组的非连续性**:
  • Java不暴露元素的地址给程序员,二维数组的每一行头结点地址没有规则,不连续,寻址操作完全交给虚拟机。
  1. **内存地址理解**:
  • 内存地址以16进制表示,相邻元素地址差代表了数据类型的大小(例如,int型数组相邻元素地址差为4个字节)。
  1. **Java中数组元素地址示例**:
  • Java中打印二维数组的引用地址显示,每行数组的地址是不同的,表明Java中二维数组的行不是连续存储的。
相关推荐
秃头佛爷41 分钟前
Python学习大纲总结及注意事项
开发语言·python·学习
阿伟*rui42 分钟前
配置管理,雪崩问题分析,sentinel的使用
java·spring boot·sentinel
待磨的钝刨43 分钟前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
XiaoLeisj3 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck3 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei3 小时前
java的类加载机制的学习
java·学习
励志成为嵌入式工程师4 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉4 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer4 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq4 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端