在 c 中初始化数组,格式为 `int a[3]={0,};`
Initialize array in c in the format `int a[3]={0,};`
我看到一个来源,其中数组在 int arr[3] ={0,};
中初始化,这是什么意思?我通常使用这种格式 int arr[3]={0};
我能知道有什么区别吗
这可能是dup,但我还是会拍的。
int arr[3] ={0,};
和int arr[3] ={0};
没有区别。
参考:C11 6.7.9:
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
两种形式的初始化器列表都被视为初始化器。许多人更喜欢末尾带有逗号的形式,因为它可以更轻松地在代码维护期间重新排列或向列表中添加元素。
int arr[3] ={0,};
声明一个包含三个元素的数组,并将第一个元素初始化为 0。当您进行部分初始化时,数组的其余部分将自动初始化为零。
参考。 C11 6.7.9:
If there are fewer initializers in a brace-enclosed list than there
are elements or members of an aggregate, or fewer characters in a
string literal used to initialize an array of known size than there
are elements in the array, the remainder of the aggregate shall be
initialized implicitly the same as objects that have static storage
duration.
我看到一个来源,其中数组在 int arr[3] ={0,};
中初始化,这是什么意思?我通常使用这种格式 int arr[3]={0};
我能知道有什么区别吗
这可能是dup,但我还是会拍的。
int arr[3] ={0,};
和int arr[3] ={0};
没有区别。
参考:C11 6.7.9:
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
两种形式的初始化器列表都被视为初始化器。许多人更喜欢末尾带有逗号的形式,因为它可以更轻松地在代码维护期间重新排列或向列表中添加元素。
int arr[3] ={0,};
声明一个包含三个元素的数组,并将第一个元素初始化为 0。当您进行部分初始化时,数组的其余部分将自动初始化为零。
参考。 C11 6.7.9:
If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate, or fewer characters in a string literal used to initialize an array of known size than there are elements in the array, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration.