8.0关于Java和c的动态数组问题

Posted chxbar.cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8.0关于Java和c的动态数组问题相关的知识,希望对你有一定的参考价值。

1.java:

java本身是没办法实现动态数组的,这个java本身不直接操作指针有关系【虽然我觉得理论上应该是和c一样,可以办到的,但java不提供,具体原因等知道了再补充】。那么java的集合例如ArrayList集合这样的是如何实现“动态数组”的呢。其实原理是:ArrayList的底层是一个数组a【Object[] a = new Object[]】, 如果需要改变ArrayList的大小,则丢弃ArrayList原先对a的引用, 然后new一个新的数组[ Object[] b = new Object[], 长度自定义],并引用之。

2.c语言:

原理:

(1)动态数组--创建,使用malloc函数:malloc的作用是在内存中动态分配一个自定义长度的连续空间;

(2)动态数组--改变数组的大小,使用relloc函数:relloc的作用是:

  a) 减少数组长度:当数组所在内存本身有剩余空间时,可按需将其本身的尾部内存拿掉【说明:对内存的操作限定在该数组所分配的内存块内】;

  b)增加数组长度:当数组所在内存的尾部有多余空间时,按需直接在原先的内存块尾部新增内存;如果原先的内存尾部空间不足,则relloc重新分配一块新的内存空间,并把原先内存的内容复制到新的内存块 上。

以上是关于8.0关于Java和c的动态数组问题的主要内容,如果未能解决你的问题,请参考以下文章

关于java中动态数组的toArray()方法的运用????

C语言关于结构体变量为动态数组赋值问题

java的静态数组和动态数组有啥区别?

⭐️欢度国庆-共约C语言进阶⭐️ 动态内存管理+柔性数组 建议收藏

JAVA中Vector怎样存放一个动态的二维数组

在C中操作动态分配的2D char数组