gpt4 book ai didi

c - 在 C 中的运行时将 1D 数组(指针)视为 3D 矩阵

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

我收到一些图像数据作为 unsigned char *image = load_image(…);

此数据是一个 3D 矩阵:x (char)、y (char) 和 channel (RGB) (char)。

如何访问每个元素作为 image[x][y][channel]

e.g. row 999, column 10000, green channel: image[999][10000][1]

说明:

  1. 我想使用 C 多维数组语法:

    array[x][y][z], not array[x * height * channels + y * channels + z]

  2. 我可以像访问二维数组一样访问一维数组:

    unsigned char (*imageMatrix)[height] = (unsigned char (*)[height])image imageMatrix[x][y] = 100

最佳答案

如果您可以使用:unsigned char (*imageMatrix)[height] = (unsigned char (*)[height])image,,那么您的编译器支持可变长度数组。 VLA 在 C99 中引入,但在 C11 中恢复为可选。

但是当支持 VLA 时,您可以将 1D 数组别名为 3D 数组,就像将其别名为 2D 数组一样:

unsigned char (*imageMatrix)[width][channel] = (unsigned char (*)[width][channel])image;
imageMatrix[x][y][channel] = 100;

关于c - 在 C 中的运行时将 1D 数组(指针)视为 3D 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47267624/

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