union的用法 inline的作用

哎  乱乱的 ,终于发现了我不是很有慧根的。 整天对别人很好,到最后别人根本就不在乎,甚至心里还想着说,这个人 很傻……
如果我很有慧根,我就不会烦了,有慧根是会成佛的,佛是不在乎这些的,但求付出……又扯了几句
//--------------------------------------------------------------
[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……
 
-------------------------------------------------------------
好了  最简单的东西 就扯这么多,反正就是要搞到谁都能看懂……

 

posted @ 2009-07-01 11:28  zhengzongzhao  阅读(612)  评论(0编辑  收藏  举报