gpt4 book ai didi

c - 在运行时将一维数组视为二维数组

转载 作者:太空狗 更新时间:2023-10-29 16:01:16 25 4
gpt4 key购买 nike

我有一些数据存储在大小为“M”的一维数组中。现在我需要将它视为一个维度为 NxP 的二维数组,其中 N 和 P 的乘积等于 M。我只在运行时知道 N 和 P 的值。如何在 C 中实现这样的功能?

int array[M]; /* one dimensional array where some data is stored*/
int** newArray; /* the dimension of newArray should be NxP such that we can access the data in 'array' as a two-dimensional array*/

最佳答案

只需将其转换为适当的数组指针类型即可:

int (*newArray)[N] = (int (*)[N])array;

之后,您可以通过以下方式访问数组:

for(int y = 0; y < P; y++) {
for(int x = 0; x < N; x++) {
array[y][x] = 42;
}
}

这等同于以下索引:

for(int y = 0; y < P; y++) {
for(int x = 0; x < N; x++) {
newArray[y*N + x] = 42;
}
}

即使 N 自 C99 以来仅在运行时已知,这仍然有效。请注意,您不需要像使用 int** 那样设置索引数组。

关于c - 在运行时将一维数组视为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32317605/

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