c结构体复制问题

前段时间自己遇到的一个问题,跟大家分享一下。

在写代码的时候,遇到结构体复制的问题,即将一个结构体里的变量值完全复制给另一个结构完全相同的结构体。

我所使用的是memcpy,结果发现,拷贝完后,新结构体里的变量值仍然不存在,最后只能单个变量复制。

值得注意的是,我的结构体里包含指针型变量,所以在复制时,需要给它开辟新的空间,单独拷贝。

如果大家有比较好的结构体拷贝方法(含有指针),一定要告诉我啊O(∩_∩)O

c结构体复制问题,布布扣,bubuko.com

时间: 2024-10-14 09:59:11

c结构体复制问题的相关文章

结构体复制与赋值

1 #include <stdio.h> 2 #include <string.h> 3 #include <malloc.h> 4 5 int main(int argc, char* argv[]) 6 { 7 struct data 8 { 9 int i; 10 char c; 11 int j; 12 int arr[2]; 13 }; 14 15 16 struct datawptr 17 { 18 int i; 19 char *c; 20 }; 21 2

[C语言 - 7] 结构体struct

A. 基本知识 与数组的对比 数组: 构造类型 只能有多个相同类型的数据构成 结构体: 结构体类型 可以由多个不同类型的数据构成 1. 定义类型 1 struct Student 2 { 3 int age; 4 char *name; 5 float height; 6 }; 2. 定义结构体变量 定义变量的多种方式 a. 1 //define a struct variable 2 struct Student stu = {27, "simon", 1.65f}; b. 1 st

7.结构体struct

A. 基本知识 与数组的对比 数组: 构造类型 只能有多个相同类型的数据构成 结构体: 结构体类型 可以由多个不同类型的数据构成 1. 定义类型 struct Student     {         int age;         char *name; float height;     }; 2. 定义结构体变量 定义变量的多种方式 a. //define a struct variable     struct Student stu = {27, "simon", 1.6

在Swift结构体中如何实现写时复制?

结构体(Struct)在Swift语言中占有重要地位,在Swift标准库中,大约有90%的公开类型都是结构体,包括我们常用的Array.String.Dictionary.结构体相比类,一个最重要的特性就是它是值类型,而类似引用类型.值类型是通过复制值来赋值的,而不是引用同一个内存地址,这样就不存在数据共享的问题,能防止意外的数据改变,并且它是线程安全的. 举一个很简单的例子,在objc中,数组是类,是引用类型,在Swift中,数组是结构体,是值类型.因此下面的代码中: let array1 =

C++结构体:默认构造函数,复制构造函数,重载=运算符

做leetcode的时候经常看到有结构体的默认构造函数,觉得很奇怪,才发现原来c++的结构体与c语言的结构体不一样,c++的结构体更像是一个类, C++结构体提供了比C结构体更多的功能,如默认构造函数,复制构造函数,运算符重载,这些功能使得结构体对象能够方便的传值. 比如,我定义一个简单的结构体,然后将其作为vector元素类型,要使用的话,就需要实现上述三个函数,否则就只能用指针了. 转:http://blog.csdn.net/fu_zk/article/details/10539705 #

C编译器剖析_1.5 结合C语言来学汇编_指针、数组和结构体

让我们再来看一份C代码,及其经UCC编译器编译后产生的主要汇编代码,如图1.33所示,其中包含了数组.指针和结构体. 图1.33 数组.指针和结构体 按照C的语义,图1.33第9行的C代码是对局部数组number的初始化,需要把number[0]初始化为2015,而数组中的其他元素皆被初始化为0.UCC编译器采取的翻译方法是:先调用memset函数来把数组number所占的内存空间清0,然后再把number[0]设为2015,如图1.33的第17至24行所示.C库函数memset的API如下所示

浅谈C语言中结构体的初始化

转自:http://www.jb51.net/article/37246.htm <代码大全>建议在变量定义的时候进行初始化,但是很多人,特别是新人对结构体或者结构体数组定义是一般不会初始化,或者不知道怎么初始化.1.初始化 复制代码代码如下: typedef struct _TEST_T {        int i;        char c[10];}TEST_T;TEST_T gst  = {1, “12345”};//可以初始化,设置i为1,s为一个字符串.TEST_T gst 

进击的雨燕-------------类和结构体

类和结构体是人们构建代码所用的一种通用且灵活的构造体.我们可以使用完全相同的语法规则来为类和结构体定义属性(常量.变量)和添加方法,从而扩展类和结构体的功能. 与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意通常一个类的实例被称为对象.然而在 Swift 中,类和结构体的关系要比在其他语言中更加的密切,本章中所讨论的大部分功能都可以用在类和结构体上.因此,我

结构体和类

结构是值类型,但在语法上常常当做类来处理 struct typeNum { public string a="hello"; public string b="world"; } 如果仅需要一个小的数据结构,可以考虑用结构,因为结构在性能上比类略佳. 结构不支持继承,在使用前必须先初始化结构是会影响性能的值类型,但根据使用结构的方式,这种影响可能是正面的,也可能是负面的. 正面的影响是为结构分配内存时,速度非常快,因 为它们将内联或者保存在栈中.在结构超出了作用域被