gpt4 book ai didi

C错误: cannot take the address of an rvalue of type 'struct pixel'

转载 作者:行者123 更新时间:2023-11-30 14:36:13 28 4
gpt4 key购买 nike

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));
}
}

最佳答案

&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 变量的引用以供进一步处理,因为其生命周期在循环内。

关于C错误: cannot take the address of an rvalue of type 'struct pixel' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58196564/

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