我如何通过引用函数传递结构数组?

How do i pass an array of structs by reference to a function?

我需要编写一个函数,通过在二维结构数组中包含图像中的每个像素来反映图像。下面是我编写的函数,它基本上将最后一个像素与第一个像素切换等等,但我需要它来编辑原始数组而不是副本,这是它目前没有做的。下面是 main 中的函数以及函数的布局方式。任何输入都会有所帮助!

reflect(height, width, &image);

函数:

void reflect(int height, int width, RGBTRIPLE *image[height][width])
{
    RGBTRIPLE temp;
    for ( int i = 0 ; i < height ; i++)
    {
        for( int j = 0 ; j < width ; j++)
        {
            temp = image[i][j];
            image[i][j] = image[i][width-j-1];
            image[i][width-1-j]=temp;

        }
    }
}

结构如下图

typedef struct
{
    BYTE  rgbtBlue;
    BYTE  rgbtGreen;
    BYTE  rgbtRed;
} __attribute__((__packed__))
RGBTRIPLE;

结构数组是使用以下方法创建的:

    // Allocate memory for image
    RGBTRIPLE(*image)[width] = calloc(height, width * sizeof(RGBTRIPLE));

对于初学者来说,函数应该像

这样声明
void reflect(int height, int width, RGBTRIPLE image[height][width]);

或喜欢

void reflect(int height, int width, RGBTRIPLE image[][width]);

或喜欢

void reflect(int height, int width, RGBTRIPLE ( *image )[width]);

并称赞

reflect(height, width, image);

在函数中循环应该是这样的

for ( int i = 0 ; i < height ; i++)
{
    for( int j = 0 ; j < width / 2 ; j++)
    {
        temp = image[i][j];
        image[i][j] = image[i][width-j-1];
        image[i][width-1-j]=temp;

    }
}