2016 - 2024

感恩一路有你

结构体赋值给另一个结构体 c 里面,传入一个结构体指针,如何将该指针指向的结构体赋值给另一个结构体实例呢?

浏览量:2080 时间:2021-03-17 02:04:25 作者:admin

c 里面,传入一个结构体指针,如何将该指针指向的结构体赋值给另一个结构体实例呢?

“不知道结构的具体定义”是否意味着没有相应的头文件?如果是这种情况,则无法通过指针直接访问opaque的实例,除非此结构定义的库还提供相应的API操作,例如复制和修改。其原因可能是设计中有意保留了结构变化的灵活性。例如,当您需要添加一个新成员(intz)时,它对客户代码没有影响。当库升级时,实现此目标的所有其他黑客手段都可能导致代码中的未定义行为。如果有一个定义,就更容易不想一个接一个地赋值。PLD struct应该有一个默认构造函数。您可以尝试使用message MS1(*MS);或者message MS1=*MS,默认情况下是浅拷贝。纯值问题不大,但当有指针在其中时,情况就非常复杂了。您需要避免MS1的操作影响MS pointer的内容。在这种情况下,编译器将发出警告。

编程里面的深拷贝和浅拷贝各是什么意思,怎么理解这两个?

浅复制意味着源对象和复制对象共享同一实体,只是引用的变量不同(名称不同)。对其中一个对象的更改会影响另一个对象。例如,一个人的名字起初是张三,后来改成了李四,但却是同一个人。无论是张三缺胳膊缺腿,还是李四缺胳膊缺腿,都是同一个人的厄运。深度复制是指源对象和复制对象相互独立,任何对象的改变都不会影响到另一个对象。例如,一个叫张三的人被用来克隆另一个叫李四的人。不管张三缺胳膊缺腿,李四缺胳膊缺腿,都不会影响别人。典型的是值对象,例如预定义的类型int32、double、struct、enum等。

结构体赋值给另一个结构体 复制结构体数组 c语言struct结构体

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。