我有以下代码:我可以声明一个数组并仅为其第一个元素分配一个初始值吗?
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} };
这将初始化零元素{1,2.0,3}
和元素{2,3.5,4}
.Others将被初始化为{0,0.0,0}
它的自我。这种方法的另一个优点是,为了在所述元件列不再是问题即你可以初始化上述阵列
Hello hello[100] = {[98] = {2,3.5,4}, [0] = {1,2.0,3} };
+1,不知道之前 –
我很高兴它为你提供了帮助。 – haccks
注意,其余的99个元件将被隐含地初始化为{0,0.0,0};这是当数组中的元素少于初始化符时的规则。 –