Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用循环的情况下在C中初始化N维数组_C_Arrays_Matrix_Initialization - Fatal编程技术网

如何在不使用循环的情况下在C中初始化N维数组

如何在不使用循环的情况下在C中初始化N维数组,c,arrays,matrix,initialization,C,Arrays,Matrix,Initialization,我想初始化一个3x3矩阵,前两行为0,最后一行为1。我已经声明了一个2D数组int矩阵[3][3] 我想在不使用循环的情况下初始化它,如下所示 0 0 11 我还想要一个N维数组的解决方案 int matrix[3][3] = { { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }; 或者,更紧凑: int matrix[3][3] = { [2] = { 1, 1, 1 } }; 只要N是固定的,该解决方案就推广到N。如果N很大,

我想初始化一个3x3矩阵,前两行为0,最后一行为1。我已经声明了一个2D数组
int矩阵[3][3]

我想在不使用循环的情况下初始化它,如下所示

0
0
11

我还想要一个N维数组的解决方案

int matrix[3][3] = {
    { 0, 0, 0 },
    { 0, 0, 0 },
    { 1, 1, 1 }
};
或者,更紧凑:

int matrix[3][3] = {
    [2] = { 1, 1, 1 }
};
只要
N
是固定的,该解决方案就推广到
N
。如果
N
很大,您可以使用mouviciel的答案来解决

或者,更紧凑:

int matrix[3][3] = {
    [2] = { 1, 1, 1 }
};
只要
N
是固定的,该解决方案就推广到
N
。如果
N
很大,您可以使用mouviciel的答案来解决

#包括
...
memset(矩阵,0,sizeof(矩阵));
矩阵[2][2]=矩阵[2][1]=矩阵[2][0]=1;

#包括
...
memset(矩阵,0,sizeof(矩阵));
矩阵[2][2]=矩阵[2][1]=矩阵[2][0]=1;

在您的情况下,您可以使用

int a[3][3] = {{}, {}, {1,1,1}}; 
请注意,空的大括号将自动用0填充

现在,如果你想

0 0 0
0 0 0
1 0 0
您可以通过以下方式完成:

int a[3][3] = {{}, {}, {1,}};
有关详细信息,请参阅(这是针对一维数组的,但它将帮助您理解上面写的内容。)


此外,它也是阵列初始化的良好资源

在你的情况下,你可以

int a[3][3] = {{}, {}, {1,1,1}}; 
请注意,空的大括号将自动用0填充

现在,如果你想

0 0 0
0 0 0
1 0 0
您可以通过以下方式完成:

int a[3][3] = {{}, {}, {1,}};
有关详细信息,请参阅(这是针对一维数组的,但它将帮助您理解上面写的内容。)


此外,它也是阵列初始化的良好资源

对于常量整数表达式
N
(例如宏或
enum
常量),必须“展开”初始值设定项。当
N
扩展为十进制常量时,有一些宏技巧可以做到这一点,但它们有点复杂。提供这样的宏,您可以使用它来编写

#define N 23

int matrix[N][N] = {
    [N-1] = P99_DUPL(N, 1),
};

这使您可以在需要时轻松地更改
N
,而无需在更新时触摸代码中的任何其他内容。

对于常量整数表达式
N
(例如宏或
enum
常量),您必须“展开”初始值设定项。当
N
扩展为十进制常量时,有一些宏技巧可以做到这一点,但它们有点复杂。提供这样的宏,您可以使用它来编写

#define N 23

int matrix[N][N] = {
    [N-1] = P99_DUPL(N, 1),
};

这使您可以在需要时轻松更改
N
,而无需触摸代码中的任何其他内容即可进行更新。

再次感谢您,同时还需要一个N维solution@AndyStowAway此解决方案适用于N维数组,只要N是编译时已知的固定数字。再次感谢,也在寻找一个N维的solution@AndyStowAway此解决方案适用于N维数组,只要N是编译时已知的固定数字。