java 自增数组_怎么存放一个自增的数组,这个数组会一直增下去

#include

#include

#define BLOCK_SIZE 20

//

每次

长大

的时候都要去申请新的内存空间,拷贝需要花时间。

//may fail in memory restricted situation

typedefstruct

{

int *array;

int size;

} Array;

//

创建新数组

Array array_create(intinit_size)

{

Array a;

a.array=(int*)malloc(sizeof(int)*init_size);

a.size=init_size;

return a;

}

//

释放内存空间

void array_free(Array *a)

{

free(a->array);

a->size=0;

a->array=NULL;

}

//

得到当前数组的长度(不见得是元素的个数)

intarray_size(const Array *a)

{

return a->size;

}

//

获取该下标下的元素

int* array_at(Array *a,int index)

{

void array_inflate(Array *a,intmore_size);//

函数申明

if(index>=a->size)

{

array_inflate(a,(index/BLOCK_SIZE+1)*BLOCK_SIZE-a->size);//**

}

return &(a->array[index]);

}

void array_inflate(Array *a,intmore_size)

{

inti;

int *p=(int *)malloc(sizeof(int)*(a->size+more_size));//**

for(i=0;isize;i++)

{

p[i]=a->array[i];

}

free(a->array);//**

a->array=p;//**

a->size+=more_size;

}

intmain(intargc,charconst *argv[])

{

Array a=array_create(5);

int j;

for(j=0;j<10;j++)

{

*array_at(&a,j)=j+1;

}

for(j=0;j<10;j++)

{

printf("%d

",*array_at(&a,j));

}

printf("\n%d\n",array_size(&a));

array_free(&a);

return 0;

}

//

输出

//1

2

3

4

5

6

7

8

9

10

//20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值