我有以下代码:
typedef struct
{
int a;
float b;
int c;
} Hello;
Hello hello[100];
我知道我可以为这个数组的第一个元素赋值:
hello[0] = {1,2.0,3};
但是当我们声明时如何分配第一个元素hello: Hello hello[100];
我有以下代码:
typedef struct
{
int a;
float b;
int c;
} Hello;
Hello hello[100];
我知道我可以为这个数组的第一个元素赋值:
hello[0] = {1,2.0,3};
但是当我们声明时如何分配第一个元素hello: Hello hello[100];
需要额外的集合{}
(数组的外部{}
,数组元素的内部集合):
Hello hello[100] = { {1, 2.0, 3} };
使用这个片段:
Hello hello[100] = {{1, 2.0, 3}};
外大括号初始化数组,但这些大括号中只有一个元素 - 您的第一个数组元素。因此,您使用外大括号内的值初始化 hello[0]。
如果您的编译器支持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} };