6.7.8 初始化
指定的初始化函数为初始化稀疏数组提供了一种机制,这在数字编程的实践中很常见。
指定的初始化函数可以对稀疏结构进行初始化,这在系统编程中很常见,并且可以通过任何成员对联合进行初始化,而不管其是否为第一个成员。
请看以下这些示例。此处的第一个示例显示了如何使用指定的初始化函数来对数组进行初始化:
enum { first, second, third }; const char *nm[] = { [third] = "third member", [first] = "first member", [second] = "second member", }; |
下面的示例证明了如何使用指定的初始化函数来对结构对象的字段进行初始化:
division_t result = { .quot = 2, .rem = -1 }; |
下面的示例显示了如何使用指定的初始化函数对复杂的结构进行初始化(否则这些结构可能会被误解):
struct { int z[3], count; } w[] = { [0].z = {1}, [1].z[0] = 2 }; |
通过使用单个指示符可以从两端创建数组:
int z[MAX] = {1, 3, 5, 7, 9, [MAX-5] = 8, 6, 4, 2, 0}; |
如果 MAX 大于 10,则数组将在中间位置包含取值为零的元素;如果 MAX 小于 10,则前五个初始化函数提供的某些值将被后五个初始化函数的值覆盖。
联合的任何成员均可进行初始化:
union { int i; float f;} data = { .f = 3.2 }; |