【发布时间】:2021-08-13 22:23:49
【问题描述】:
我相信这是一个简单的问题: 有没有办法在不使用循环的情况下用非零值初始化数组?
我知道的一种方法是使用范围初始化来用我想要的值初始化数组。 例如:
int main()
{
/* Using Designated Range Initialization*/
int my_array[10] = {[0 ... 3] = 5, [4 ... 7] = 15, [8 ... 9] = 30};
/* Using Explicit initialization for each element */
int other_array[10] = {5, 5, 5, 5, 15, 15, 15, 15, 30, 30};
return 0;
}
但是,这种方法只是 GCC 编译器的扩展,而不是 ISO C 的一部分。所以考虑到系统之间可能存在不可移植性,有没有办法以类似的方式进行数组初始化?当然,不用循环。
另外,我正在寻找的方法只是超出了数组每个元素的显式初始化。
【问题讨论】:
-
仅列出所有值就足够了:
int my_array[10] = {5,5,5,5,15,15,15,15,15,30,30};? -
感谢您的回答!但如果它是一个非常大的数组,这可能是一项乏味的任务。
-
是的。但是除了“替代方案”之外,您还没有说明您的确切要求是什么。因此,如果您有其他具体要求,那么建议您更新您的问题以这样说。
-
确实!我将更新问题以使其更具限制性。
标签: c gcc designated-initializer