c语言中如何自定义数组长度

c语言中如何自定义数组长度,第1张

动态分配的数组可以自定义数组的长度,示例如下:

#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]// 再实例化一次,就是一个新数组,以前数组里的东西就不存在类

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6443039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-22
下一篇 2023-03-22

发表评论

登录后才能评论

评论列表(0条)

保存