数据结构题。答案选择B,麻烦解释下。

说实话,你的解释有点令人困惑。
我看了一下。

BA是首地址。
A[1 ,1 ] 位于 BA 中。
数组元素每个占用3 个字节。
就列而言,它们是A[1 ,1 ]、A[2 ,1 ]、A[3 ,1 ]到A[8 ,1 ]。
这8 个元素每一个占用3 个字节,所以这8 个元素总共是2 4 个字节。

然后继续到 A[1 ,2 ]、A[2 ,2 ]、A[4 ,8 ]。
总共有 6 0 个元素。
这个数字是从哪里来的?你写的是8 7 +4 =6 0。
我实在不明白这一点。
逐列计算,应该是8 +7 +6 +5 +4 +3 +2 +1 =3 6 ,加上下一行的4 ,总共4 0。
我可能理解错了。
这是正确的。
是6 0。

下一个地址是A[5 ,8 ]的地址。
我们如何计算这个地址?你说的是BA+3 6 0。
换句话说,如果从BA算起3 个字节后6 0,那就是A[5 ,8 ]的地址。

也就是说,6 0 x 3 字节就是1 8 0字节,所以B的值为BA+1 8 0。

数组是内存中的数据行。
按行保存还是按列保存取决于标题的内容。
既然您提到计算了每一列,那么让我们尝试计算每一列。
如果逐行执行,算法将会改变。

这道题的关键是要知道每个元素占用多少字节以及数组是按行存储还是按列存储。
如果你明白了,你就会得到答案。

在c#里byte[]是什么意思

c语言中若为每个数组元素单独存储地址,会浪费大量内存。

keil 最大的数组大小 4096大数组 指定内存

4 09 6 字节数组需要 1 6 KB 内存。
检查您的 MCU 手册以获取资源。

创建.sct 文件来定义内存区域。

使用 __attribute__((at(0x2 000))) 指定地址。

请勿使用无效地址。