如何初始化一些数组中的几个元素?
这可能是一个愚蠢的问题,但有可能分配一些值而不是所有的数组? 澄清我想要什么:
如果我需要像{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
1
, array
2
和array
3
元素0
和8
。 其余元素将被初始化为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;