2

Is there any way to assign all elements of an array the value 0 in one go.The array accepts its size from the user. Hence

int array[x] = {0};

Won't work!

4

4 回答 4

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

array = (int*) calloc (i,sizeof(int));
于 2013-10-08T19:42:20.700 回答
0

我最好的选择是memsetstring.h图书馆使用。

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

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

于 2013-10-08T20:04:59.143 回答
0

You will need to dynamically allocate the memory for this array:

int *array;
int x;

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

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

then set value for all of them

memset(array, 0, x);

or use calloc:

array = calloc(x, sizeof(int));
于 2013-10-08T19:41:01.897 回答
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 大小);

int *array = (int *) calloc(x, sizeof(int));
于 2013-10-08T19:48:55.467 回答