gpt4 book ai didi

c - 如何将二维数组传递给 C 中大小未知的函数?

转载 作者:行者123 更新时间:2023-12-01 09:08:35 24 4
gpt4 key购买 nike

我正在尝试将图像读入 2D 数组,然后对其 RGB 值进行修改,然后创建一个调整大小函数。图像的尺寸在加载图像之前是未知的,因此它看起来像这样。

我试过将“像素”传递到 unsigned char ** 和 pixel[0][0] 到 unsigned char* 以及其他一些我不记得的方法。我在网上搜索了不同的方法,但它们似乎都不起作用。我已经看到,如果你定义一个数组的大小,比如像素 [][40] 它可以工作,但直到加载图像后我才知道大小。

void invertImg(unsigned char **img, int height, int width)
{
int h, w;
for (h = 0; h < height; h++){
for (w = 0; w < width * 3; w += 3){
//Blue
img[h][w] = ~img[h][w];
//Green
img[h][w + 1] = ~img[h][w + 1];
//Red
img[h][w + 2] = ~img[h][w + 2];
}
}
}
    // Get Image name and desired dimensions

char header[54];
unsigned char pixels[height][width * 3];

FILE *in = fopen(img, "rb");
FILE *out = fopen("out.bmp", "wb");

fread(header, 1, 54, in);
fread(pixels, 1, height * width * 3, in);


//function that the 2d array needs to be passed into
invertImg(pixels, height, width);


fwrite(header, sizeof(char), HEADER_SIZE, out);
fwrite(pixels, sizeof(char), height * width * 3, out);

fclose(in);
fclose(out);

如何将这个无符号字符数组放入函数中以便能够修改其值?

最佳答案

您可以根据其他参数传递大小的多维数组:

void invertImg(int height, int width, unsigned char img[height][width])
{
...

没有参数名称的此函数的声明如下所示:
void invertImg(int, int, unsigned char img[*][*]);

然后你可以像这样调用函数:
invertImg(height, width, pixels);

关于c - 如何将二维数组传递给 C 中大小未知的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54579162/

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