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

use*_*316 1 c arrays initialization

我有以下代码:

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

Hello hello[100];
Run Code Online (Sandbox Code Playgroud)

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

hello[0] = {1,2.0,3};
Run Code Online (Sandbox Code Playgroud)

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

hmj*_*mjd 6

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

Hello hello[100] = { {1, 2.0, 3} };
Run Code Online (Sandbox Code Playgroud)

  • 请注意,其余99个元素将隐式初始化为{0,0.0,0}; 当初始化程序数少于数组中的元素时,这是规则. (2认同)

sas*_*hka 5

使用此代码段:

Hello hello[100] = {{1, 2.0, 3}};
Run Code Online (Sandbox Code Playgroud)

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