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

C 无法将引用(带符号的变量)传递到另一个变量,c,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') 我该怎么办?假设场景的

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

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

我该怎么办?

假设
场景
的类型是
场景
,那么
场景
的类型显然是
场景*
,这正是编译器所抱怨的。如果
scene\u t
typedef
用于
struct
或非数组内置类型,则只需编写

scene_t temp = scene;

取决于您想要的语义。可能是前者


如果
场景\u t
实际上是一种数组类型,则上面的第一个选项将不起作用。第二个会,但实际上比你需要的更冗长。这就足够了

thing_scene_t_is_an_array_of * temp = scene;
无论哪种方式,您都只是得到一个指向旧数据的新指针,并且覆盖一个指针会覆盖另一个指针,所以请注意



<>请注意,在操作员地址(&)中使用“参考”一词,建议您从C++ POV中查看这个词。C没有C++风格的引用,你不应该用那种方式思考<代码>和<代码>。我不知道为什么,但第二个正在工作。但是,第一个完全不起作用如果第一个失败,则很可能
场景\u t
基本上是一个数组。C不实现数组赋值(但可以通过将数组包装到
结构中来伪造它)。请注意,对于第二种情况,
*temp
的内存与
场景
的内存相同,覆盖一个会覆盖另一个;这个概念适用于C++。有指针,正如编译器所说,您不能将指针(
struct scene\t*
)分配给结构(
scene\t
,大概相当于
struct scene\t
)。第二种表示法尝试取消对非指针的引用;你也不能那样做。你只需要:
scene\u t temp=scene-枯燥但简单。这个问题似乎离题了,因为它不太可能帮助其他访问者在将来堆积溢出。
thing_scene_t_is_an_array_of * temp = scene;