我今天在C++考试中看到了一道题:

Given the arrayint Multi[2][3][2] = {14,11,13,10,9,6,8,7,1,5,4,2},what is the value of Multi[1][1][0]?

三维数组不应该像这样初始化:{{{},{}},{{},{}},{{},{}}}吗?有了这样的指标,我怎么能找到元素的值呢?这太让人困惑了.

推荐答案

您可以用这两种方式初始化数组,不过建议使用大括号,因为这样可以提高可读性.

查找未用大括号格式化的多维数组元素的值的最简单方法是拆分该array.例如,数组的维数为2x3x2:

首先将数组拆分为2组(2x3x2)

{14,11,13,10,9,6,8,7,1,5,4,2} --> {{14,11,13,10,9,6}, {8,7,1,5,4,2}}

然后将每组分成3组(2x3x2)

{{14,11,13,10,9,6},{8,7,1,5,4,2}} --> {{{14,11}, {13,10} ,{9,6}}, {{8,7}, {1,5}, {4,2}}}

现在,正如您所看到的,在每个较小的集合(2x3x2)中还剩下2个元素,因此您已经用大括号格式化了array.

现在查找索引为[1][1][0]的元素的值更简单了.这个元素是第二个([1][1][0])较大集合的第二个([1][1][0])较小集合的第一个([1][1][0])元素,所以答案是1.


话虽如此,这样的试题表明你的老师缺乏专业性,他们更喜欢滥用编程语言语法,而不是教授基本的初始化规则.

C++相关问答推荐

GCC:try 使用—WError或—pedantic using pragmas

如果实际的syscall是CLONE(),那么为什么strace接受fork()呢?

我可以在C中声明不同长度数组的数组而不带变量名吗?

Linux不想运行编译后的文件

Setenv在c编程中的用法?

如何使用指向 struct 数组的指针并访问数组中特定索引处的 struct

如何识别Linux中USB集线器(根)和连接到集线器(根设备)的设备(子设备)?

在Linux上使用vscode和lldb调试用Makefile编译的c代码

在libwget中启用Cookie会导致分段故障

如何在C中定义指向函数的指针并将该指针赋给函数?

问题:C#Define上的初始值设定项元素不是常量

try 判断长整数是否为素数

分配给静态变量和动态变量的位置之间有区别吗?

通过char*访问指针的对象表示是未定义的行为吗?

如何不断地用C读取文件?

在列表中查找素数

使用 strtok 多次分割一个字符串会导致意外行为

malloc 属性不带参数

在 C 中的 scanf() 格式说明符中使用宏获取字符串长度

仅使用其内存地址取消引用 C 中的 struct