同为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的更多相关文章

  1. UnrealScript语言基础

    总体特征 (1)大小写不敏感.关键字.宏.变量名.函数名以及类名不区分大小写:变量名可以与关键字同名 (2)局部变量.成员变量未初始化时,会被编译器初始化 (3)没有全局变量.全局函数,所有东西必须写 ...

  2. NOIP模拟赛 夕阳

    题目描述 “我有个愿望,我希望在灿烂千阳时遇见你.” 这是个有n个点的世界,有m条无向边连接着这n个点,但是不保证点之间能够互相到达. “这个世界的夕阳,只在奇数长的简单路径的尽头.”一个神如是说. ...

  3. rqnoj28[stupid]愚蠢的宠物

    题目描述 背景 大家都知道,sheep有两只可爱的宠物(一只叫神牛,一只叫神菜).有一天,sheep带着两只宠物到狗狗家时,这两只可爱的宠物竟然迷路了…… 描述 狗狗的家因为常常遭到猫猫的攻击,所以不 ...

  4. NOIP2015 运输计划(bzoj4326)

    4326: NOIP2015 运输计划 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 886  Solved: 574[Submit][Status] ...

  5. Linux驱动编程--基于I2C子系统的I2C驱动

    代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正 #include <linux/kernel.h> #include <linux/module.h> ...

  6. java中调用dll文件的两种方法

    一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNativ ...

  7. JNA—JNI终结者

    JNA—JNI终结者 介绍 给大家介绍一个最新的访问本机代码的Java框架—JNA. JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的J ...

  8. A Tour of Go Pointers

    Go has pointers, but no pointer arithmetic. Struct fields can be accessed through a struct pointer. ...

  9. PTA 07-图5 Saving James Bond - Hard Version (30分)

    07-图5 Saving James Bond - Hard Version   (30分) This time let us consider the situation in the movie ...

  10. PTA 06-图2 Saving James Bond - Easy Version (25分)

    This time let us consider the situation in the movie "Live and Let Die" in which James Bon ...

随机推荐

  1. iwebshop 订单存库修改为下单件库存

    //减少库存量 $orderGoodsDB = new IModel('order_goods'); $orderGoodsList = $orderGoodsDB->query('order_ ...

  2. HDU 1402 fft 模板题

    题目就是求一个大数的乘法 这里数字的位数有50000的长度,按平时的乘法方式计算,每一位相乘是要n^2的复杂度的,这肯定不行 我们可以将每一位分解后作为系数,如153 = 1*x^2 + 5*x^1 ...

  3. 利用Jmeter进行Web测试

    JMeter介绍 脚本录制 运行JMeter进行测试 JMeter主要组件介绍 参数化设置 动态数据关联 使用命令行运行JMeter脚本 利用XSLT分析JMeter结果文件 1:JMeter,一个1 ...

  4. 一个null引发的错误

    写程序时,发生一个unrecognized selector的错误,很显然,这是一个经典错误,运行时找不到可调用的方法. 系统提示的reason是 -[NSNull length] 错误 经过查找,原 ...

  5. java.lang.ClassNotFoundException: com.*.listener.ConfigInfoReader

    包的问题,删除掉了buildPath的包,再加上一个需要用的,问题搞定...不知道是为什么

  6. 团队开发——冲刺2.b

    冲刺阶段二(第二天) 1.昨天做了什么? 收集游戏图片:开始.暂停.继续.重新开始.退出……为了界面的后期美工做准备. 2.今天准备做什么? 把“开始游戏”.“退出游戏”.“取消”等文字按钮加工成游戏 ...

  7. UIkit框架之UIcollection

    1.继承链:UIScrollView:UIview:UIResponder:NSObject 2.collection view使用的数据源需要遵守UICollectionViewDataSource ...

  8. Multiply game_线段树

    Problem Description Tired of playing computer games, alpc23 is planning to play a game on numbers. B ...

  9. Ubuntn系统忘记密码的解决方法(虚拟机下同样处理)

    不知道你有没有遇到过忘记了ubuntn系统密码的情况,反正我都了,一段时间没用就很容易忘记密码的,此时无奈只能修改密码了!下面分享一个简单实用的方法: 版本号为: (我用的是V-BOX虚拟机安装的ub ...

  10. 十分钟了解分布式计算:GraphLab

    GraphLab是一个面向大规模机器学习/图计算的分布式内存计算框架,由CMU在2009年开始的一个C++项目,这里的内容是基于论文 Low, Yucheng, et al. "Distri ...