数组初始化C.

Aug*_*ina 3 c arrays

这个初始化是什么意思:

char arr[10] = { 0, };
Run Code Online (Sandbox Code Playgroud)

我很熟悉char arr[10] = {0};将所有元素设置为零,并将char arr[10] = {1,2};前两个元素设置为1和2(ascii),其余元素设置为0.我不熟悉上面的格式.快速测试显示它可能就像char arr[10] = {0};,但还有其他含义我不知道吗?

unw*_*ind 6

是的,它与没有尾随逗号的版本相同.

有关尾随逗号的更多讨论,请参阅此问题.


MOH*_*MED 6

如何将数组的所有成员初始化为相同的值?:

将所有成员初始化为相同的值:

int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
Run Code Online (Sandbox Code Playgroud)

缺少值的元素将初始化为0:

int myArray[10] = { 1, 2 }; //initialize to 1,2,0,0,0...
Run Code Online (Sandbox Code Playgroud)

所以这会将所有元素初始化为0:

int myArray[10] = { 0 }; //all elements 0
Run Code Online (Sandbox Code Playgroud)

在C++中,空的初始化列表也会将每个元素初始化为0:

int myArray[10] = {}; //all elements 0 in C++
Run Code Online (Sandbox Code Playgroud)

如果未指定初始化程序,则具有静态存储持续时间的对象将初始化为0:

static int myArray[10]; //all elements 0
Run Code Online (Sandbox Code Playgroud)

如果您的编译器是GCC,您可以使用以下语法:

int array[1024] = {[0 ... 1023] = 5};
int A[10] = {[0 ... 4] = 5, [5 ... 9] = 3};
Run Code Online (Sandbox Code Playgroud)