无法将引用(带&符号的变量)传递给另一个变量

时间:2013-03-09 00:59:10

标签: c

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

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')

我该怎么办?

1 个答案:

答案 0 :(得分:2)

假设scene的类型是scene_t,那么&scene的类型应该是scene_t*,这是编译器所抱怨的。如果scene_ttypedef的{​​{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 ++样式引用,你不应该以这种方式考虑&