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;
无论哪种方式,您都只是得到一个指向旧数据的新指针,并且覆盖一个指针会覆盖另一个指针,所以请注意
<>请注意,在操作员地址(
场景\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;