c语言定义数组的大小,您可以在C中定义运行时数组的大小

Joel..

6

也许是这样的:

#include

#include

/* An arbitrary starting size.

Should be close to what you expect to use, but not really that important */

#define INIT_ARRAY_SIZE 8

int array_size = INIT_ARRAY_SIZE;

int array_index = 0;

array = malloc(array_size * sizeof(int));

void array_push(int value) {

array[array_index] = value;

array_index++;

if(array_index >= array_size) {

array_size *= 2;

array = realloc(array, array_size * sizeof(int));

}

}

int main(int argc, char *argv[]) {

int shouldBreak = 0;

int val;

while (!shouldBreak) {

scanf("%d", &val);

shouldBreak = (val == 0);

array_push(val);

}

}

这将提示您输入数字并将其存储在数组中,如您所要求的那样.在给定0时传递将终止.

您创建了一个array_push用于添加到数组的访问器函数,realloc当您用完空间时,可以使用此函数调用.每次分配的空间量增加一倍.最多你会分配你需要的双倍内存,最坏的情况下你会调用realloclog n次,其中n是最终的数组大小.

您可能还想在调用malloc和realloc后检查是否有失败.我上面没有这样做过.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值