本文介绍了如何初始化3维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试初始化3-d数组,但是由于某种原因,在进行编译时,它会给我很多警告
I am trying to initialize a 3-d array but for some reason when I compile, it is giving me a lot of warnings
double array[5][4][1]=
{
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16},
{17,18,19,20}
}
};
给出的警告:
sales.c: In function `main':
sales.c:28: warning: excess elements in array initializer
sales.c:28: warning: (near initialization for `array[0][0]')
sales.c:28: warning: excess elements in array initializer
sales.c:28: warning: (near initialization for `array[0][0]')
sales.c:28: warning: excess elements in array initializer
sales.c:28: warning: (near initialization for `array[0][0]')
sales.c:29: warning: excess elements in array initializer
sales.c:29: warning: (near initialization for `array[0][1]')
sales.c:29: warning: excess elements in array initializer
sales.c:29: warning: (near initialization for `array[0][1]')
sales.c:29: warning: excess elements in array initializer
sales.c:29: warning: (near initialization for `array[0][1]')
sales.c:30: warning: excess elements in array initializer
sales.c:30: warning: (near initialization for `array[0][2]')
sales.c:30: warning: excess elements in array initializer
sales.c:30: warning: (near initialization for `array[0][2]')
sales.c:30: warning: excess elements in array initializer
sales.c:30: warning: (near initialization for `array[0][2]')
sales.c:31: warning: excess elements in array initializer
sales.c:31: warning: (near initialization for `array[0][3]')
sales.c:31: warning: excess elements in array initializer
sales.c:31: warning: (near initialization for `array[0][3]')
sales.c:31: warning: excess elements in array initializer
sales.c:31: warning: (near initialization for `array[0][3]')
sales.c:32: warning: excess elements in array initializer
sales.c:32: warning: (near initialization for `array[0][4]')
sales.c:32: warning: excess elements in array initializer
sales.c:32: warning: (near initialization for `array[0][4]')
sales.c:32: warning: excess elements in array initializer
sales.c:32: warning: (near initialization for `array[0][4]')
sales.c:32: warning: excess elements in array initializer
sales.c:32: warning: (near initialization for `array[0]')
当我通过丢失一对花括号而仅用2-d数组初始化时,编译器不会给出这些警告.有人可以暗示我在做什么错吗?
When I initialize with just a 2-d array by losing a pair of braces, the compiler doesn't give these warnings. Can anyone suggest what I am doing wrong?
推荐答案
维度1最特殊;您的括号也太多了:
The dimension 1 is most peculiar; you also have one too many levels of braces:
double array[5][4][1]=
{
// { These braces mean what follows is meant to initialize array[0], but
// there are 5 initializers for the 4 elements in array[0], and there
// are 4 initializers for each of the 'size 1' sub-arrays which is why
// the compiler complains about too many initializers for array[0][0][0], etc.
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16},
{17,18,19,20}
// }
};
这至少可以编译.完全括号的版本将在每个数字周围包含一对括号:
This would at least compile. The fully braced version would include a pair of braces around each number:
double array[5][4][1]=
{
{ { 1 }, { 2 }, { 3 }, { 4 }, },
{ { 5 }, { 6 }, { 7 }, { 8 }, },
{ { 9 }, { 10 }, { 11 }, { 12 }, },
{ { 13 }, { 14 }, { 15 }, { 16 }, },
{ { 17 }, { 18 }, { 19 }, { 20 }, },
};
这是5行,每行有4个子数组,每个子数组包含一个数字.
That's 5 lines, with 4 sub-arrays on each line, and each sub-array contains a single number.
这篇关于如何初始化3维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!