如何仅使用-1值初始化数组

pat*_*ues 5 c arrays

可能重复:
如何在C中
初始化一个int初始化数组

我想知道初始化一个int数组只包含-1值的最快/最简单的方法.我需要的数组是90英特长,所以直截了当的方法应该像这样初始化它:

int array[90]={-1, -1, -1, ...};
Run Code Online (Sandbox Code Playgroud)

但我只想使用一次数组,所以我想能够动态地使用它,并且能够在程序中使用它后释放它,所以我更喜欢快速的方式calloc,但不是零,而是-1课程.

Omk*_*ant 9

如果您使用的是gcc,请使用指定的初始化程序

int array[90] = { [ 0 ... 89 ] = -1}

int array[90],i;
for(i = 0; i < 90 ; arr[i++] = -1);
Run Code Online (Sandbox Code Playgroud)

要动态执行此操作,您必须分配使用,malloc然后您只释放内存,否则释放未分配的内存malloc,calloc或者realloc是未定义的行为.

用这个:

int *array;
array=malloc(sizeof(int)*n);
for(i=0;i<n;array[i++]=-1);
// After use free this
free(array);
Run Code Online (Sandbox Code Playgroud)


oua*_*uah 5

如果没有显式枚举所有初始值设定项,则无法在初始化时在标准C中执行此操作.

在GNU C中,您可以使用GNU C 指定的初始化程序

 int array[90] = {[0 ... sizeof array - 1] = -1};
Run Code Online (Sandbox Code Playgroud)

初始化后:

   int i;

   for (i = 0; i < sizeof array / sizeof *array; i++)
   {
       array[i] = -1;
   }
Run Code Online (Sandbox Code Playgroud)