如何在C编程中初始化多维数组
How to initialize multidimentional array in C Programming
我在 运行 这段代码
时遇到错误
int row1=2,col1=2;
int mat1[row1][col1]=
{
{1,5},
{4,6}
};
这段代码有什么问题??
IDE:代码块
error: variable-sized object may not be initialized|
根据 C 规范,数组定义为
int mat1[row1][col1]=
{
{1,5},
{4,6}
};
是一个VLA (Variable Length Array),无法初始化。
引用 C11
,章节 §6.7.6.2/P4,
[...] If the size is an integer constant expression
and the element type has a known constant size, the array type is not a variable length
array type; otherwise, the array type is a variable length array type.
和章节 §6.7.9
The type of the entity to be initialized shall be an array of unknown size or a complete
object type that is not a variable length array type.
您需要使用编译时常量表达式作为数组维度才能使用大括号括起来的初始值设定项。
您可以为此使用 #define
个宏,例如
#define ROW 2 //compile time constant expression
#define COL 2 //compile time constant expression
int mat1[ROW][COL]=
{
{1,5},
{4,6}
};
你这里有一个变长数组。这样的数组不能初始化。如果维度是常量(即数字常量,而不是声明为 const
的变量),则只能初始化数组:
int mat1[2][2]=
{
{1,5},
{4,6}
};
您正在尝试初始化一个可变大小的对象。您可以稍后尝试在其他地方分配值,或者简单地使用数字而不是变量。
我在 运行 这段代码
时遇到错误int row1=2,col1=2;
int mat1[row1][col1]=
{
{1,5},
{4,6}
};
这段代码有什么问题??
IDE:代码块
error: variable-sized object may not be initialized|
根据 C 规范,数组定义为
int mat1[row1][col1]=
{
{1,5},
{4,6}
};
是一个VLA (Variable Length Array),无法初始化。
引用 C11
,章节 §6.7.6.2/P4,
[...] If the size is an integer constant expression and the element type has a known constant size, the array type is not a variable length array type; otherwise, the array type is a variable length array type.
和章节 §6.7.9
The type of the entity to be initialized shall be an array of unknown size or a complete object type that is not a variable length array type.
您需要使用编译时常量表达式作为数组维度才能使用大括号括起来的初始值设定项。
您可以为此使用 #define
个宏,例如
#define ROW 2 //compile time constant expression
#define COL 2 //compile time constant expression
int mat1[ROW][COL]=
{
{1,5},
{4,6}
};
你这里有一个变长数组。这样的数组不能初始化。如果维度是常量(即数字常量,而不是声明为 const
的变量),则只能初始化数组:
int mat1[2][2]=
{
{1,5},
{4,6}
};
您正在尝试初始化一个可变大小的对象。您可以稍后尝试在其他地方分配值,或者简单地使用数字而不是变量。