#include
<stdio.h>
#include
<string.h>
#include
<stdlib.h>
int
main()
{
printf("输入要分配的内存大小:")
int
size
scanf("%d",
&size)
//输入自定义的数组长度
int
*pstart
=
(int
*)malloc(sizeof(int)
*size)
if
(pstart==0)
{
printf("不能分配内存\n")
return
0
}
memset(pstart,
0x00,
sizeof(int)
*
size)
int
inx
for
(inx=0
inx!=size
++inx)
pstart[inx]
=
inx
for
(inx=0
inx!=size
++inx)
printf("%d\t",
pstart[inx])
printf("\n")
return
0
}
在Java中,数组不能动态重设大小。一个可替代方法是使用java.util.ArrayList (或者java.util.Vector)代替使用原始数组(array)。另一种解决方案是用一个不同大小的数组重设数组,将旧数组内容拷贝到新的数组。/** * 使用一个新大小重设数组,并拷贝旧数组的内容到新数组 * @param oldArray 旧数组被重设 * @param newSize 新数组大小 * @return 返回带同样内容的新数组 */privatestatic Object resizeArray (Object oldArray, int newSize){ int oldSize = java.lang.reflect.Array.getLength(oldArray)Class elementType = oldArray.getClass().getComponentType()Object newArray = java.lang.reflect.Array.newInstance( elementType,newSize)int preserveLength = Math.min(oldSize,newSize)if (preserveLength >0) System.arraycopy (oldArray,0,newArray,0,preserveLength)return newArray}// resizeArray()测试用例publicstaticvoid main (String[] args) { int[] a = {1,2,3}a = (int[])resizeArray(a,5)a[3] =4a[4] =5for (int i=0i
以上回答你满意么?
在Java中,数组对象Array的长度是在实例化时就定死了,不能修改。
像你这种情况,一般是新建一个数组,重新设置长度,可能的话再将老数组里的值拷贝进去:
public class ArrayTest {
public static void main(String[] args) {
int[] arr1 = { 1, 2, 3, 4, 5 }// 初始化一个数组,长度是5(定死了)
int[] arr2 = new int[10]// 重新初始化数组,长度是10
// 将老数组复制到新数组
for (int i = 0i <arr1.lengthi++) {
arr2[i] = arr1[i]
}
// 将老数组对象arr1指向新数组
arr1 = arr2
// 如果不要复制,最简单的就是直接实例化
int[] arr1_1 = new int[5]// 初始化一个数组,长度是5(定死了)
arr1_1 = new int[10]// 再实例化一次,就是一个新数组,以前数组里的东西就不存在类
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)