我尝试将对象的引用分配给另一个变量
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')
我该怎么办?
答案 0 :(得分:2)
假设scene
的类型是scene_t
,那么&scene
的类型应该是scene_t*
,这是编译器所抱怨的。如果scene_t
是typedef
的{{1}}或非数组内置类型,则应该写
struct
或
scene_t temp = scene;
取决于您想要的语义。可能是前者。
如果scene_t* temp = &scene;
实际上是一个数组类型,那么上面的第一个选项将不起作用。第二个将,但实际上比你需要的更多。
scene_t
无论哪种方式,你只是得到一个指向旧数据的新指针,并覆盖一个覆盖另一个,所以要小心。
请注意,在address-of运算符(thing_scene_t_is_an_array_of * temp = scene;
)的上下文中使用“reference”一词表示您正在从c ++ POV中查看此内容。 C没有c ++样式引用,你不应该以这种方式考虑&
。