我有以下代码:
typedef struct
{
int a;
float b;
int c;
} Hello;
Hello hello[100];
我知道我可以为这个数组的第一个元素赋值:
hello[0] = {1,2.0,3};
但是在我们声明hello: Hello hello[100];
答案 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} };