码迷,mamicode.com
首页 > 其他好文 > 详细

随便2--struct pointer

时间:2016-04-18 20:40:23      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

同为struct,如果struct中没有指针, C 和C++可以用等号赋值,但是一旦里面涉及到指针,就不能用等号,要用memcpy

struct A{
char v1[20];
int v2;} a,b;

a = b;

这是没有任何问题的赋值.

struct B{
char *v1;
int v2;} c,d;
c = d;
这种结构体赋值,就需要注意(包括在C++里)。


比如:
struct A{
char v1[20];
int v2;} a,b;
struct * a;

struct* b;
对于指针赋值,实际上也存在同样的情况,即不是数据进行了复制保存而是多了一个指针指向而已,这样一旦b对象释放,a的指向就成了非法的垃圾数据。
所以在c中,自定义类型、数组都是要另外自己定义复制函数的,这主要是代码安全考虑,而不是语言层面考虑。

随便2--struct pointer

标签:

原文地址:http://www.cnblogs.com/jlmgary/p/5405549.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!