一 数组在內存中的存储方式
看待一个数组时,一定要把数组看成两个部分:一部分是数组引用,也就是在代码中定义的数组引用变量,它存储在内存的栈部分,另一部分是实际的数组对象,这部分存储在內存的堆部分,通常无法直接访问它,只能通过数组引用变量来访问,下图清晰的描述了数组在内存中的存储示意图。
二数组应用举例
1代码示例
public class ArrayInRam { public static void main(String[] args) { // 定义并初始化数组,使用静态初始化 int[] a = {5, 7 , 20}; // 定义并初始化数组,使用动态初始化 int[] b = new int[4]; // 输出b数组的长度 System.out.println("b数组的长度为:" + b.length); // 循环输出a数组的元素 for (int i = 0 ,len = a.length; i < len ; i++ ) { System.out.println(a[i]); } // 循环输出b数组的元素 for (int i = 0 , len = b.length; i < len ; i++ ) { System.out.println(b[i]); } // 因为a是int[]类型,b也是int[]类型,所以可以将a的值赋给b。 // 也就是让b引用指向a引用指向的数组 b = a; // 再次输出b数组的长度 System.out.println("b数组的长度为:" + b.length); } }
2 运行结果
5
7
20
0
0
0
0
b数组的长度为:3
3结果分析
图一是b=a前,数组在內存中的表示。
图二是b=a后,数组在內存中的表示。
针对原来的b数组,因为它失去了引用数组,会变成垃圾,等待垃圾回收杌制回收它。
相关推荐
在实际开发中,理解数组的深度对于优化数据处理和内存管理非常重要。例如,在渲染树状数据或处理多级关联数据时,了解数据的深度可以帮助我们制定更有效的算法和策略。通过学习和掌握如何计算数组的最大深度,开发者...
在C语言中,动态变量是程序运行时根据需要分配内存空间的变量,这通常涉及到内存管理的概念,如动态内存分配和释放。动态变量输出是指在程序执行过程中,根据某些条件或用户输入创建变量并显示其值。让我们深入探讨...
5. **内存管理**:包括动态内存分配(`new`和`delete`操作符)和智能指针(如`std::unique_ptr`、`std::shared_ptr`),以确保内存的有效使用和避免内存泄漏。 6. **标准库**:C++标准库提供了大量预先定义的函数和...
在指针上下文中,它们会改变指针的值,使其指向下一个或上一个内存位置。这在遍历数组或者结构体时非常有用。 在阅读 `main.c` 文件时,你可能会发现如何在实际代码中应用这些运算符的例子。`README.txt` 文件可能...