数组理论基础

  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中二维数组的行不是连续存储的。
相关推荐
元亓亓亓3 分钟前
Java后端开发day38--不可变集合&Stream流
java·开发语言
努力创造奇迹7 分钟前
C 语言联合体、枚举、typedef 详解
c语言·开发语言
纪元A梦10 分钟前
华为OD机试真题——阿里巴巴找黄金宝箱Ⅰ(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
java·c语言·javascript·c++·python·华为od·go
AI_RSER21 分钟前
Python 数据可视化全场景实现(一)
开发语言·人工智能·python·信息可视化·遥感
eqwaak024 分钟前
Matplotlib高阶技术全景解析(续):动态交互、三维可视化与性能优化
开发语言·python·语言模型·性能优化·交互·matplotlib
CHQIUU26 分钟前
跨语言哈希一致性:C# 与 Java 的 MD5 之战?
java·c#·哈希算法
愚润求学27 分钟前
【专题四】前缀和(3)
开发语言·c++·笔记·leetcode·刷题·c++11
JavaDog程序狗38 分钟前
【java】easypoi导出excel单元格,填充动态下拉列
java·spring boot·excel
hu_yuchen39 分钟前
C++:智能指针
开发语言·c++
Java中文社群1 小时前
国内首个「混合推理模型」Qwen3深夜开源,盘点它的N种对接方式!
java·人工智能·后端