让我们在C或C99中假设如下:
typedef struct
{
int x;
double y;
} MY_S;
MY_S a[666] = {333, 666.6};
这是否只初始化数组的第一个对象?如果是,是否有一种方法可以使用该语法将数组的所有元素初始化为所有相同的值(不调用函数/循环,也不重复初始化程序)?
发布于 2016-06-02 16:35:48
发布于 2016-06-02 16:41:27
在标准C中,您需要重复初始化器。在GCC中,可以指定要用相同的初始化器初始化的元素范围,例如:
MY_S a[666] = { [0 ... 665] = {333, 666.0} };
发布于 2016-06-02 16:38:52
如果我正确地理解了您,您需要查看指定的初始化器指定初始化器。
这是一个GNU C扩展,您可以用它在一次演示中初始化数组的值。
int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
这将初始化1到元素0到9,2初始化元素10到99,3到100元素。
在你的情况下,就像
MY_S a[666] = { [0 .. 665] = {333, 666.0} };
https://stackoverflow.com/questions/37597089
复制相似问题