如何在C语言中声明和初始化四维数组
我对编程还比较陌生,我需要进入一个四维数组,我几乎无法将我的头围绕它。那么,让我们从一个简单的3-d数组开始,每个数组有两个元素:如何在C语言中声明和初始化四维数组,c,arrays,multidimensional-array,C,Arrays,Multidimensional Array,我对编程还比较陌生,我需要进入一个四维数组,我几乎无法将我的头围绕它。那么,让我们从一个简单的3-d数组开始,每个数组有两个元素: int arr[2][2][2] = { { {1, 2} {3, 4} //redline on "{" } { //redline on "{" {5, 6} {7, 8} } }; VS-2012在“3”之前将“{”改为“}”。如何
int arr[2][2][2] =
{
{
{1, 2}
{3, 4} //redline on "{"
}
{ //redline on "{"
{5, 6}
{7, 8}
}
};
VS-2012在“3”之前将“{”改为“}”。如何才能以整洁的格式输入数组?有4个维度会使它更复杂,我需要能够清楚地看到数据
另外,我的数组中有大量的零,在essense中,每个arr[n][n]都是0,所以我想知道是否可以简化初始化
我的数组将是
int arr[7][7][15][2]
还是改用struct更好
提前谢谢 您缺少一个
,
对于三维阵列
int arr[2][3][4] = {
{
{1, 2, 1, 2}, {1, 2, 1, 4}, {1, 2, 4, 4}
},
{
{1, 1, 2, 4}, {1, 2, 1, 4}, {1, 2, 1, 4}
}
};
or int arr[2][3][4] = {1,2,1,2,1,2,1,4,1,2,4,4,1,1,2,4,1,2,1,4,1,2,1,4};
int arr[2][3][4][2] = {
{
{
{1,2},{1,2},{1,2},{4,2}
},
{
{2, 4},{1, 4},{1, 4},{1,2}
},
{
{2, 4},{1, 4},{1, 4},{1,8}
}
},
{
{
{1,2},{1,2},{1,2},{4,2}
},
{
{2, 4},{1, 4},{1, 4},{1,2}
},
{
{2, 4},{1, 4},{1, 4},{1,2}
}
}
};
对于四维数组
int arr[2][3][4] = {
{
{1, 2, 1, 2}, {1, 2, 1, 4}, {1, 2, 4, 4}
},
{
{1, 1, 2, 4}, {1, 2, 1, 4}, {1, 2, 1, 4}
}
};
or int arr[2][3][4] = {1,2,1,2,1,2,1,4,1,2,4,4,1,1,2,4,1,2,1,4,1,2,1,4};
int arr[2][3][4][2] = {
{
{
{1,2},{1,2},{1,2},{4,2}
},
{
{2, 4},{1, 4},{1, 4},{1,2}
},
{
{2, 4},{1, 4},{1, 4},{1,8}
}
},
{
{
{1,2},{1,2},{1,2},{4,2}
},
{
{2, 4},{1, 4},{1, 4},{1,2}
},
{
{2, 4},{1, 4},{1, 4},{1,2}
}
}
};
例如,每个带括号的元素都可以看作
{1,2}
中的int
s之一。使用列表初始化指示使用逗号枚举单独的元素。因此,正确的语法是在每个括号内的数组({{1,2},{3,4}
)后面加逗号:
对于四维数组,您必须编写大量“硬编码”代码;您最好编写一个函数来为您填充值。在外部大括号内,内部大括号
{}
表示矩阵行。但需要哪些逗号?哪些逗号是可选的
在C 1999二维数组声明初始化中:
(标准C 1999中的专家能否编辑上述列表以更正任何错误陈述?记住
C
始终使用行主顺序为静态声明的数组分配内存。
例如:
- 在二维数组的情况下,假设
内存分配从第一个元素开始,即inta[3][2]
然后A[0][0]
跳到下一行,但内存分配将是连续的,因此内存布局顺序中的下一个元素将是A[0][1]
然后A[1][0]
A[1][1]>A[2][0]->A[2][1]
- 因此,在初始化的情况下,更简单的方法是以1-D形式线性地将其可视化,然后将其写下来李>
int-arr[2][3][4]={1,2,1,2,1,4,1,2,4,4,1,1,2,4,1,2,1,4,1,1,4}代码>四维数组的表示形式
int arr[2][2][2][2] =
{
{ { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } },
{ { {9,10}, {11, 12} }, { {13, 14}, {15, 16} } }
};
您还必须在连续的括号内的“元素”之间添加逗号。int arr[2][2]={{{{1,2}、{3,4}、{{5,6}、{7,8};正如Alexander所说,初始化中“}”后面有逗号。谢谢大家!我确实需要对数组进行硬编码,因为程序将对数组进行一些疯狂的搜索。这不是真正的“一个,
操作符”。这只是一个逗号,是初始值设定项的语法元素。Is与,
运算符无关。