gpt4 book ai didi

c - 二维数组的大小在哪里以及如何使用点将 1 维变为 2 维?

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:13 26 4
gpt4 key购买 nike

就像下面的代码:

int a[100],b[10][10];

我们声明了两个数组,一个是100个元素的一维数组,另一个是10*10的二维数组。

我的问题是,b 的行 (10) 的大小存储在哪里

而且,我如何使用像 c[][] 这样的类型来访问数组 a 中的元素?

目前,我知道有两种方法可以做到这一点。第一个如下

#define c[(x)][(y)] a[(x*10)+(y)]

另一种是使用memcpy复制一个二维数组。

还有其他办法吗?

非常感谢!

最佳答案

where is the size of b's line (10) store?

int b[3][5];
size_t rows = sizeof b / sizeof b[0]
size_t columns = sizeof b[0] / sizeof b[0][0];

获取行数和列数,即35


How could I use the type like c[][] to visit a element in a

int a[15];
int (*c)[3][5] = (int (*)[3][5]) &a;

/* Assign a's elements here. */

int a0 = (*c)[0][0];
int a1 = (*c)[0][1];
...
int a4 = (*c)[0][4];
int a5 = (*c)[1][0];
...
int a14 = (*c)[2][4];

如果处理得当,您使用 #define 的提议将会奏效:

#define c(x, y) (a[(x) * 10 + (y)])

int a[15];

/* Assign a's elements here. */

int a0 = c(0, 0);
int a1 = c(0, 1);
...
int a4 = c(0, 4);
int a5 = c(1, 0);
...
int a14 = c(2, 4);

关于c - 二维数组的大小在哪里以及如何使用点将 1 维变为 2 维?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29298052/

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