1

我有以下代码:

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

Hello hello[100];

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

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

但是当我们声明时如何分配第一个元素hello: Hello hello[100];

4

3 回答 3

6

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

Hello hello[100] = { {1, 2.0, 3} };
于 2013-06-24T16:03:26.197 回答
5

使用这个片段:

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

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

于 2013-06-24T16:03:01.510 回答
1

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

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

这会将第 0个元素{1,2.0,3}第 98 个元素初始化为{2,3.5,4}.Others 将被初始化为{0,0.0,0}它自己。此方法的另一个优点是,列出元素的顺序不再重要,即您可以将上述数组初始化为

Hello hello[100] = {[98] = {2,3.5,4}, [0] = {1,2.0,3} };
于 2013-06-24T20:32:49.570 回答