gpt4 book ai didi

c - C中多数组的存储映射函数

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:54 25 4
gpt4 key购买 nike

当你有一个像

这样的二维数组时
int matrix[P][Q];

您可以使用以下选项之一访问位置 [i][j] 上的元素:

matrix[i][j]
*(matrix[i]+j)
*((*(matrix+i))+j)

但是我想通过存储映射函数访问元素,我试过了

*(matrix+Q*i+j)

但这似乎给出了内存中的位置,而不是我想要从矩阵中得到的元素。我想我已经很接近了,但我不知道如何调整它才能得到我想要的结果。

最佳答案

为了将矩阵作为一维数组使用,您需要将其转换为一个。

下面的测试程序可以完成这项工作:

#include <assert.h>

int main(int argc, char** argv)
{
#define P 7
#define Q 4
int matrix[P][Q] = {{ 1, 2, 3, 4}, { 5, 6, 7, 8},
{ 9,10,11,12}, {13,14,15,16},
{17,18,19,20}, {21,22,23,24},
{25,26,27,28}};

for (int i = 0; i < P; ++i)
{
for (int j = 0; j < Q; ++j)
{
int val_1d = *(((int*)matrix)+Q*i+j);
assert(matrix[i][j] == val_1d);
}
}
return 0;
}

关于c - C中多数组的存储映射函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28070669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com