union 的用法 inline的作用

很久之前写的了,发在自己另外的一个Blog上:http://www.cnblogs.com/dhbzzz/

感觉好像还有点帮助……

---------------------------------------------------------------------------------------------


哎  乱乱的 ,终于发现了我不是很有慧根的。 整天对别人很好,到最后别人根本就不在乎,甚至心里还想着说,这个人 很傻……
如果我很有慧根,我就不会烦了,有慧根是会成佛的,佛是不在乎这些的,但求付出……又扯了几句
//--------------------------------------------------------------
[1]union
联合,定义的方式和struct一样的啦,不过和struct的区别在于,union中所有的成员只能共用一个空间,
也就是说,union同时间只能存储其中一个成员的资料。所以union的大小,呵呵,你就可以想到啦,当然
要所有成员中最胖的那个了
union Person
{
     char  chBoy;
     char  chGirl;
     short sMan;
     short sWoman;
     long  lOld;
};
上面就是一个,sizeof(Person) = 4. 因为最胖的是long 型占用4个字节。union某些时候作用很大的,自己从下面这个例子中体会哦
typedef union _LARGE_INTEGER {
  struct {
    DWORD LowPart ;
    LONG HighPart ;
  };
  struct {
    DWORD LowPart ;
    LONG HighPart ;
  } u ;
  LONGLONG QuadPart ;
} LARGE_INTEGER, *PLARGE_INTEGER;
体会的要点 只要记着 union的所有成员共用同一块存储空间,所以上面这个就可以用DWORD和LONG组成LONGLONG
LONGLONG 的 也可以轻松的就拆成DWORD 和 LONG  这个在做文件的拷贝等时候 是很有作用的。
 
[2]inline
我也懒得扯一堆什么内联之类的了,简单的点说和#define差不多
定义一个函数的时候,前面加上关键字inline ,则其他地方出现这个函数的时候,实际上相当于把这个函数展开,而不是调用啦,
所以效率上会高一些,因为不用搞一堆乱七八糟的参数压栈、清理之类的。
inline int Sum (int a, int b)
{
    return (a + b);
}
其他地方比如出现个什么 Sum(1, 2),实际上就是直接展开 1 + 2,
如果不用inline则需要调用Sum这个函数,然后噼噼啪啪 Push Jump Pop……
 
-------------------------------------------------------------
好了  最简单的东西 就扯这么多,反正就是要搞到谁都能看懂……
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值