如何初始化一些数组中的几个元素?

这可能是一个愚蠢的问题,但有可能分配一些值而不是所有的数组? 澄清我想要什么:

如果我需要像{1,0,0,0,2,0,0,0,3,0,0,0}这样的数组,我可以像这样创build它:

 int array[] = {1,0,0,0,2,0,0,0,3,0,0,0}; 

这个数组的大部分值是'0'。 是否可以跳过这个值,只分配值1,2和3? 我想像这样的东西:

 int array[12] = {0: 1, 4: 2, 8: 3}; 

是否可以跳过这个值,只分配值1,2和3?

在C,是的。 使用指定的初始化程序(在C99中添加,在C ++中不支持)。

 int array[12] = {[0] = 1, [4] = 2, [8] = 3}; 

上面的初始化程序将分别初始化array 1array 2array 3元素08 。 其余元素将被初始化为0 。 这将相当于

  int array[12] = {1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0}; 

最好的部分是元素的排列顺序无关紧要。 也可以这样写

  int array[12] = {[8] = 3, [0] = 1, [4] = 2}; 

但请注意, [ ]内的expression式应该是一个整型常量expression式

这是我微不足道的方法:

 int array[12] = {0}; array[0] = 1; array[4] = 2; array[8] = 3; 

不过,从技术上讲,这不是“初始化”数组:)

另一种方法是使用memset为数组中的所有元素赋予默认值,然后分配特定的元素:

 int array[12]; memset(array, 0, sizeof(int) * 12); //if the default value is 0, this may not be needed array[0] = 1; array[4] = 2; array[8] = 3;