有没有办法一次性为数组的所有元素赋值0
。数组接受用户的大小。因此
int array[x] = {0};
行不通!
答案 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
来创建数组,因为你现在的方式,你的数组将在堆栈上创建(具有有限的容量),并且当创建它的函数返回时将被释放(就像常规一样)自动变量)。这意味着您的数组无法从其本地范围之外访问。