0

我试图将对对象的引用分配给另一个变量

scene_t temp = &scene;

但是,我收到此错误消息

error: incompatible types when assigning to type 'scene_t' from type 'struct scene_t *'

我也尝试使用指针

scene_t temp = *scene

我得到了一个不同的错误

type argument of unary '*' (have 'scene_t')

我该怎么办?

4

1 回答 1

2

假设类型scenescene_t那么很明显类型&scenescene_t*,这是编译器抱怨的。如果scene_t是 atypedef或非struct数组内置类型,您应该只写

scene_t temp = scene;

或者

scene_t* temp = &scene;

取决于你想要的语义。大概是前者。


如果scene_t实际上是数组类型,那么上面的第一个选项将不起作用。第二个,但实际上比你需要的更冗长。这样做就足够了

thing_scene_t_is_an_array_of * temp = scene;

无论哪种方式,您都只是得到一个指向旧数据的新指针,并覆盖一个覆盖另一个,所以要小心。


请注意,在地址运算符 ( &) 的上下文中使用“引用”一词表明您是从 c++ POV 中查看的。C 没有 c++ 样式引用,您不应该&以这种方式考虑。

于 2013-03-09T01:08:47.127 回答