set_pixel函数的签名接受一个指向结构像素的指针。因此,在我的for循环中,我使用'&‘符号来获取get_pixel返回的结构像素的地址。求求你,我想知道为什么这不起作用,以及我如何解决它。
struct pixel get_pixel(struct picture *pic, int x, int y);
void set_pixel(struct picture *pic, int x, int y, struct pixel *rgb);
for (int x = 0; x < get_image_width(pic->img); x++) {
for (int y = 0; y < get_image_height(pic->img); y++) {
set_pixel(tempPic, y, get_image_width(pic->img) - x - 1,
&get_pixel(pic, x, y));
}
}发布于 2019-10-02 15:08:24
&get_pixel(pic, x, y)get_pixel(pic, x, y)返回rvalue,而rvalue没有地址,因此不能对其使用&运算符。
您可以做的是,将get_pixel的返回值存储在某个临时变量中,并将其地址传递给set_pixel函数。
for (int y = 0; y < get_image_height(pic->img); y++) {
struct pixel temp = get_pixel(pic, x, y);
set_pixel(tempPic,
y,
get_image_width(pic->img) - x - 1,
&temp);
}注意:set_pixel函数不应该存储temp变量的引用以供进一步处理,因为它的生命周期在loop内。
https://stackoverflow.com/questions/58196564
复制相似问题