结构体整体赋值有陷阱吗?该如何处理

结构体整体赋值有陷阱吗?
C/C++ code

/* Points. */

struct CGPoint {
  CGFloat x;
  CGFloat y;
};
typedef struct CGPoint CGPoint;

/* Sizes. */

struct CGSize {
  CGFloat width;
  CGFloat height;
};
typedef struct CGSize CGSize;

/* Rectangles. */

struct CGRect {
  CGPoint origin;
  CGSize size;
};
typedef struct CGRect CGRect;



有个对象 OjectA, 它有个属性是 Rect,类型是 CGRect。我用了两种方式来给他赋值,代码如下

C/C++ code


// 代码1

CGRect f;
f.origin.x = 1.0;
f.origin.y = 1.0;
f.size.width = 2.0;
f.size.width = 3.0;

OjectA.Rect = f;

// 代码2

CGRect f = OjectA.Rect;

f.origin.x = 1.0;
f.origin.y = 1.0;
f.size.width = 2.0;
f.size.width = 3.0;

OjectA.Rect = f;




请问下这两种写法会有差异不? 最终的行为我在不同的环境测出来一样,不知道为什么。。。

------解决方案--------------------
这是指针少数确定性的不被诟病用法之一,也是java等语言一直羡慕的存在。
指针仅仅是表明对象地址情况,在运算过程中不存在任何数据的操作,函数调用经济、高效,不占存储空间,可以说在函数内部,指针的存在直接是作为世纪参变量的别名处理的,指针操作同时避免了结构、对象大量的数据转储、资源泄漏、遮掩等隐性问题。
参考书到没有在意,但这是我20年的经验部分总结,不知对你有没有帮助。