我可以声明一个数组并仅为其第一个元素分配初始值吗?

时间:2013-06-24 16:01:10

标签: c arrays initialization

我有以下代码:

typedef struct
{
   int a;
   float b;
   int c;
} Hello;

Hello hello[100];

我知道我可以为这个数组的第一个元素赋值:

hello[0] = {1,2.0,3};

但是在我们声明hello: Hello hello[100];

时如何分配第一个元素

3 个答案:

答案 0 :(得分:6)

需要额外的{}集合(数组的外部{},数组元素的内部集合):

Hello hello[100] = { {1, 2.0, 3} };

答案 1 :(得分:5)

使用此代码段:

Hello hello[100] = {{1, 2.0, 3}};

外括号初始化数组,但这些大括号中只有元素 - 你的第一个数组元素。因此,您使用外括号内的值初始化hello [0]。

答案 2 :(得分:1)

如果您的编译器支持 c99 功能,那么您可以使用指定的初始化程序来初始化数组的任何元素。

Hello hello[100] = {[0] = {1,2.0,3}}, [98] = {2,3.5,4} };  

这会将 0th 元素初始化为{1,2.0,3},将第98个元素初始化为{2,3.5,4}。其他元素将初始化为{0,0.0,0}它自己。这种方法的另一个优点是,列出元素的顺序不再重要,即你可以在数组上面初始化为

Hello hello[100] = {[98] = {2,3.5,4}, [0] = {1,2.0,3} };