float kernel[kernel_size][kernel_size] = {
0.000036, 0.000363, 0.001446, 0.002291, 0.001446, 0.000363, 0.000036,
0.000363, 0.003676, 0.014662, 0.023226, 0.014662, 0.003676, 0.000363,
0.001446, 0.014662, 0.058488, 0.092651, 0.058488, 0.014662, 0.001446,
0.002291, 0.023226, 0.092651, 0.146768, 0.092651, 0.023226, 0.002291,
0.001446, 0.014662, 0.058488, 0.092651, 0.058488, 0.014662, 0.001446,
0.000363, 0.003676, 0.014662, 0.023226, 0.014662, 0.003676, 0.000363,
0.000036, 0.000363, 0.001446, 0.002291, 0.001446, 0.000363, 0.000036
};
float kernel[kernel_size][kernel_size] = {
{0.000036, 0.000363, 0.001446, 0.002291, 0.001446, 0.000363, 0.000036},
{0.000363, 0.003676, 0.014662, 0.023226, 0.014662, 0.003676, 0.000363},
{0.001446, 0.014662, 0.058488, 0.092651, 0.058488, 0.014662, 0.001446},
{0.002291, 0.023226, 0.092651, 0.146768, 0.092651, 0.023226, 0.002291},
{0.001446, 0.014662, 0.058488, 0.092651, 0.058488, 0.014662, 0.001446},
{ 0.000363, 0.003676, 0.014662, 0.023226, 0.014662, 0.003676, 0.000363},
{0.000036, 0.000363, 0.001446, 0.002291, 0.001446, 0.000363, 0.000036}
};
如您所见,第二个数组每行都有额外的{}。
这两个是等价的,或者如果我用另一个替换其中一个,程序的行为会不同吗?
答案 0 :(得分:4)
如果kernel_size
为7,则没有区别。否则,他们是不同的。
第一个版本将按顺序使用初始化程序以逐行方式初始化整行(并且如果有的话,对数组的其余部分进行零初始化)
第二个版本将跳到每个内部float [kernel_size]
的下一个{
子阵列(行)(它将零行初始化每行的剩余部分,如果有的话)。
如果kernel_size
大于7,则显然会导致第二个版本中的初始化布局不同。
答案 1 :(得分:0)
是的,那些是等价的!指示预期行的嵌套大括号是可选的。 Here你可以看到例子。
答案 2 :(得分:0)
第一个是具有49个条目的1个dia阵列,第二个是具有7x7个条目的2个dia阵列