1
1107
除非该值为0(在这种情况下,可以省略初始值设定项的某些部分 相应的元素将被初始化为0),这不是一个简单的方法。 但不要忽视显而易见的解决方案:
缺少值的元素将初始化为0:
因此,这将把所有元素初始化为0:
在C++中,空初始化列表也将初始化每个元素到0。 这是 not allowed 用C:
记住,如果没有,具有静态存储持续时间的对象将初始化为0 已指定初始值设定项:
而“0”并不一定意味着“所有位都为零”,因此使用上面的 比memset()更好更便携。(浮点值将为 初始化为+0,指向空值的指针等。) |
2
361
如果编译器是gcc,则可以使用以下语法:
查看详细描述: http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Designated-Inits.html |
3
168
对于静态初始化具有相同值的大型数组,不需要多次复制粘贴,可以使用宏:
如果需要更改值,则只需在一个位置进行替换。 编辑:可能的有用扩展(礼貌) Jonathan Leffler ) 您可以很容易地将其概括为:
可以使用以下方法创建变量:
用于结构或复合数组。
宏名称可以协商。 |
4
61
如果要确保显式初始化数组的每个成员,只需从声明中省略维度:
编译器将从初始值设定项列表中推导维度。不幸的是,对于多维数组,只能忽略最外层的维度:
可以,但是
不是。 |
5
46
|
6
22
我觉得这比
如果数组大小发生更改。 |
7
11
您可以像上面详细介绍的那样完成整个静态初始值设定项的工作,但是当数组大小发生变化时(当数组配置项出现变化时,如果不添加适当的额外初始值设定项,则会导致垃圾)。 memset为您提供了一个执行工作的运行时命中,但是没有一个代码大小命中是正确的,对数组大小的更改是免疫的。当数组大于几十个元素时,我几乎在所有情况下都会使用这个解决方案。 如果静态声明数组真的很重要,我会编写一个程序来为我编写该程序,并将其作为构建过程的一部分。 |
8
8
另一种方法是:
见: 指定的inits 然后问一个问题:什么时候可以使用C扩展? 上面的代码示例在一个嵌入式系统中,永远不会看到来自另一个编译器的指示灯。 |
9
6
有点厚着脸皮的回答;写下陈述
在您最喜欢的支持数组的语言(我的是Fortran,但还有很多其他语言),并将其链接到您的C代码。你可能想把它包装成一个外部函数。 |
10
5
对于初始化“normal”数据类型(如int数组),可以使用括号表示法,但如果数组中仍有空间,则会在最后一个值之后将其归零:
|
11
4
如果数组恰好是int或任何int大小或mem模式的大小正好与int的时间匹配(即所有零或0xa5a5a5),最好的方法是使用 memset() . 否则,在移动索引的循环中调用memcpy()。 |
12
3
有一种快速的方法可以用给定的值初始化任何类型的数组。它适用于大型阵列。算法如下:
为了
|
13
2
没有人提到访问初始化数组元素的索引顺序。我的示例代码将给出一个示例。
输出是:
|
14
1
例子: INT阵列〔10〕; memset(数组,-1,10*sizeof(int)); |
15
1
简而言之,如果您在编译时启用优化,则不会比这更好:
额外的好处:代码实际上是清晰的:) |
16
0
它将给O/P 5 5 5 5 5 5 5……直到整个数组的大小 |
17
0
我认识那个用户
如果你提前知道数组的大小…
上面有几个注意事项,一个是
您可以使用找到的联机编译器来尝试此代码 here . |
18
0
对于延迟初始化(即类成员构造函数初始化),请考虑:
|
19
0
回到今天(我不是说这是个好主意),我们设置了第一个元素,然后:
甚至不确定它是否还能继续工作(这取决于memcpy的实现),但它可以通过重复地将初始元素复制到下一个元素来工作,甚至可以用于结构数组。 |
20
0
我知道原来的问题明确地提到了C而不是C++,但是如果你(像我一样)来到这里寻找C++数组的解决方案,这里有一个巧妙的技巧:
如果编译器支持
fold expressions
,您可以使用模板魔术和
你可以看看 code at work (在Wandbox) |
21
-1
我在这个问题中没有看到任何要求,所以解决方案必须是通用的:初始化一个由具有初始成员值的未指定的可能结构元素构建的未指定的多维数组:
结果:
编辑:
|
Tom Buck · c#程序在整数列表上冻结 6 年前 |
Ran Lavi · 在c中初始化结构的指针++ 6 年前 |
Js_zero · 在c++中实例化对象有几种方法,它们之间有什么区别 6 年前 |
jfernal · 节点。js在加载其他函数之前等待初始化变量 6 年前 |
Victor · 在javafx中运行时更改标签文本 6 年前 |
blubb · 在Kotlin中是否有更惯用的方法来初始化此映射? 6 年前 |
Bing Bang · 初始化包含字节数组的结构数组 6 年前 |