版权声明:本文为博主原创文章,未经博主允许不得转载。
结构体是一种数据结构,类似 C++的类。
结构体中 可能包含 很多种变量: (整型,浮点型,结构体,指针);
结构体在定义的时候请尽量保持:低字节变量在前,低字节变量在后,这样 可以提高代码质量和内存的利用率.(关于结构体的大小暂不讨论)
设结构体 Data如下:
结构体的浅拷贝可以直接采用a=b;就像普通的复制运算一样,没有任何问题.
为什么这么说呢?
首先:
Data中没有指针,只有一个int ;一个 char; 在Data a,b语句执行后;系统已为a,b均分配好空间.
在b=a;语句执行后 编译器会自动的将a的值赋给b 就像 执行了 b.A=a.A; b.B=a.B;一样;
之后 a和b就没有任何关系了. 结构体"拷贝"成功;
但以上结构体拷贝只能叫浅拷贝,或者说,在结构体里面没有指针时 浅拷贝 和 深拷贝 是没有任何不同的;
浅拷贝 就是 说 讲一个结构体里面的值完全赋给另一个结构体.
但当结构体中含有指针时:浅拷贝只会拷贝指针所指向的空间地址值;
而不会深层的自动额外分配空间,并拷贝空间内的值.
这样子的话,当b=a赋值语句执行后,a和b中各会有两个指针指向同一个空间;
当a中指针指向的空间被销毁后,b中指针成野指针.调用指针值 和 释放指针时会出现异常,且不易排错.
-
顶
- 0