可变大小数组元素的默认值

时间:2013-10-08 19:38:08

标签: c

有没有办法一次性为数组的所有元素赋值0。数组接受用户的大小。因此

int array[x] = {0};

行不通!

4 个答案:

答案 0 :(得分:0)

您需要为此阵列动态分配内存:

int *array;
int x;

scanf("%d\n", &x);

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

然后为所有这些设置值

memset(array, 0, x);

或使用calloc:

array = calloc(x, sizeof(int));

答案 1 :(得分:0)

int *array;
int i;
printf ("Amount of numbers to be entered: ");
scanf ("%d",&i);

array = (int*) calloc (i,sizeof(int));

答案 2 :(得分:0)

使用memset

void * memset(void * ptr,int value,size_t num);

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

memset(array,0,sizeof(int) * x);

或使用:

void * calloc(size_t num,size_t size);

int *array = (int *) calloc(x, sizeof(int));

答案 3 :(得分:0)

我最好的选择是使用memset库中的string.h

memset(array,0,x*sizeof(int));

这不是技术上的初始化,因为没有赋值,它只将给定内存中的所有字节设置为'0',但这正是你想要在这里做的。
另外,考虑使用malloc来创建数组,因为你现在的方式,你的数组将在堆栈上创建(具有有限的容量),并且当创建它的函数返回时将被释放(就像常规一样)自动变量)。这意味着您的数组无法从其本地范围之外访问。