首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C错误:无法获取'struct pixel‘类型的右值的地址

C错误:无法获取'struct pixel‘类型的右值的地址
EN

Stack Overflow用户
提问于 2019-10-02 14:56:38
回答 1查看 130关注 0票数 0

set_pixel函数的签名接受一个指向结构像素的指针。因此,在我的for循环中,我使用'&‘符号来获取get_pixel返回的结构像素的地址。求求你,我想知道为什么这不起作用,以及我如何解决它。

代码语言:javascript
复制
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));
  }
}
EN

回答 1

Stack Overflow用户

发布于 2019-10-02 15:08:24

代码语言:javascript
复制
&get_pixel(pic, x, y)

get_pixel(pic, x, y)返回rvalue,而rvalue没有地址,因此不能对其使用&运算符。

您可以做的是,将get_pixel的返回值存储在某个临时变量中,并将其地址传递给set_pixel函数。

代码语言:javascript
复制
                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内。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58196564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档