青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

山寨:不是最好的,是最適合我們的!歡迎體驗山寨 中文版MSDN

Blog @ Blog

當(dāng)華美的葉片落盡,生命的脈絡(luò)才歷歷可見。 -- 聶魯達

常用鏈接

統(tǒng)計

積分與排名

BBS

Blog

Web

最新評論

sizeof()用法匯總[轉(zhuǎn)]

轉(zhuǎn)自:http://blog.programfan.com/article.asp?id=19802

sizeof()功能:計算數(shù)據(jù)空間的字節(jié)數(shù)
1.與strlen()比較
      strlen()計算字符數(shù)組的字符數(shù),以"\0"為結(jié)束判斷,不計算為'\0'的數(shù)組元素。
      而sizeof計算數(shù)據(jù)(包括數(shù)組、變量、類型、結(jié)構(gòu)體等)所占內(nèi)存空間,用字節(jié)數(shù)表示。
2.指針與靜態(tài)數(shù)組的sizeof操作
      指針均可看為變量類型的一種。所有指針變量的sizeof 操作結(jié)果均為4。
注意:int *p; sizeof(p)=4;
                  但sizeof(*p)相當(dāng)于sizeof(int);      
      對于靜態(tài)數(shù)組,sizeof可直接計算數(shù)組大小;
      例:int a[10];char b[]="hello";
              sizeof(a)等于4*10=40;
              sizeof(b)等于6;
 注意:數(shù)組做型參時,數(shù)組名稱當(dāng)作指針使用!!
               void  fun(char p[])
               {sizeof(p)等于4} 
經(jīng)典問題: 
      
double* (*a)[3][6]; 
      cout
<<sizeof(a)<<endl; // 4 a為指針
      cout<<sizeof(*a)<<endl; // 72 *a為一個有3*6個指針元素的數(shù)組
      cout<<sizeof(**a)<<endl; // 24 **a為數(shù)組一維的6個指針
      cout<<sizeof(***a)<<endl; // 4 ***a為一維的第一個指針
      cout<<sizeof(****a)<<endl; // 8 ****a為一個double變量
問題解析:a是一個很奇怪的定義,他表示一個指向double*[3][6]類型數(shù)組的指針。既然是指針,所以sizeof(a)就是4 
      
既然a是執(zhí)行double*[3][6]類型的指針,*a就表示一個double*[3][6]的多維數(shù)組類型,因此sizeof(*a)=3*6*sizeof(double*)=72。同樣的,**a表示一個double*[6]類型的數(shù)組,所以sizeof(**a)=6*sizeof  (double*)=24***a就表示其中的一個元素,也就是double*了,所以sizeof(***a)=4。至于****a,就是一個double了,所以sizeof(****a)=sizeof(double)=8

3.格式的寫法
   sizeof操作符,對變量或?qū)ο罂梢圆患永ㄌ枺羰穷愋停毤永ㄌ枴?br>4.使用sizeof時string的注意事項
   string s="hello";
   sizeof(s)等于string類的大小,sizeof(s.c_str())得到的是與字符串長度。
5.union 與struct的空間計算
   總體上遵循兩個原則:
   (1)整體空間是
占用空間最大的成員(的類型)所占字節(jié)數(shù)的整倍數(shù)
   (2)數(shù)據(jù)對齊原則----內(nèi)存按結(jié)構(gòu)成員的先后順序排列,當(dāng)排到該成員變量時,其前面已擺放的空間大小必須是該成員類型大小的整倍數(shù),如果不夠則補齊,以此向后類推。。。。。
   注意:數(shù)組按照單個變量一個一個的擺放,而不是看成整體。如果成員中有自定義的類、結(jié)構(gòu)體,也要注意數(shù)組問題。

例:[引用其他帖子的內(nèi)容]
因為對齊問題使結(jié)構(gòu)體的sizeof變得比較復(fù)雜,看下面的例子:(默認(rèn)對齊方式下)
struct s1
{
char a;
double b;
int c;
char d;
};

struct s2
{
char a;
char b;
int c;
double d;
};

cout<<sizeof(s1)<<endl; // 24
cout<<sizeof(s2)<<endl; // 16
  同樣是兩個char類型,一個int類型,一個double類型,但是因為對齊問題,導(dǎo)致他們的大小不同。計算結(jié)構(gòu)體大小可以采用元素擺放法,我舉例子說明一下:首先,CPU判斷結(jié)構(gòu)體的對界,根據(jù)上一節(jié)的結(jié)論,s1s2的對界都取最大的元素類型,也就是double類型的對界8。然后開始擺放每個元素。
 
對于s1,首先把a放到8的對界,假定是0,此時下一個空閑的地址是1,但是下一個元素ddouble類型,要放到8的對界上,離1最接近的地址是8了,所以d被放在了8,此時下一個空閑地址變成了16,下一個元素c的對界是416可以滿足,所以c放在了16,此時下一個空閑地址變成了20,下一個元素d需要對界1,也正好落在對界上,所以d放在了20,結(jié)構(gòu)體在地址21處結(jié)束。由于s1的大小需要是8的倍數(shù),所以21-23的空間被保留,s1的大小變成了24
 
對于s2,首先把a放到8的對界,假定是0,此時下一個空閑地址是1,下一個元素的對界也是1,所以b擺放在1,下一個空閑地址變成了2;下一個元素c的對界是4,所以取離2最近的地址4擺放c,下一個空閑地址變成了8,下一個元素d的對界是8,所以d擺放在8,所有元素擺放完畢,結(jié)構(gòu)體在15處結(jié)束,占用總空間為16,正好是8的倍數(shù)。

這里有個陷阱,對于結(jié)構(gòu)體中的結(jié)構(gòu)體成員,不要認(rèn)為它的對齊方式就是他的大小,看下面的例子:
struct s1
{
char a[8];
};

struct s2
{
double d;
};

struct s3
{
s1 s;
char a;
};

struct s4
{
s2 s;
char a;
};
cout<<sizeof(s1)<<endl; // 8
cout<<sizeof(s2)<<endl; // 8
cout<<sizeof(s3)<<endl; // 9
cout<<sizeof(s4)<<endl; // 16;

  s1s2大小雖然都是8,但是s1的對齊方式是1s28double),所以在s3s4中才有這樣的差異。
 
所以,在自己定義結(jié)構(gòu)體的時候,如果空間緊張的話,最好考慮對齊因素來排列結(jié)構(gòu)體里的元素。
補充:不要讓double干擾你的位域
  在結(jié)構(gòu)體和類中,可以使用位域來規(guī)定某個成員所能占用的空間,所以使用位域能在一定程度上節(jié)省結(jié)構(gòu)體占用的空間。不過考慮下面的代碼:
struct s1
{
 int i: 8;
 int j: 4;
 double b;
 int a:3;
};

struct s2
{
 int i;
 int j;
 double b;
 int a;
};

struct s3
{
 int i;
 int j;
 int a;
 double b;
};

struct s4
{
 int i: 8;
 int j: 4;
 int a:3;
 double b;
};

cout<<sizeof(s1)<<endl; // 24
cout<<sizeof(s2)<<endl; // 24
cout<<sizeof(s3)<<endl; // 24
cout<<sizeof(s4)<<endl; // 16

  可以看到,有double存在會干涉到位域(sizeof的算法參考上一節(jié)),所以使用位域的的時候,最好把float類型和double類型放在程序的開始或者最后。

相關(guān)參數(shù):
sizeof int:4
sizeof short:2
sizeof long:4
sizeof float:4
sizeof double:8
sizeof char:1
sizeof p:4
sizeof WORD:2
sizeof DWORD:4

posted on 2008-01-17 17:54 isabc 閱讀(226) 評論(0)  編輯 收藏 引用 所屬分類: C++基礎(chǔ)

廣告信息(免費廣告聯(lián)系)

中文版MSDN:
歡迎體驗

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产婷婷| 国产精品久久| 99视频精品| 亚洲精品欧美日韩专区| 亚洲免费观看| 一区二区电影免费观看| 亚洲欧洲日产国产综合网| 91久久久久久| 99国内精品久久| 亚洲天堂激情| 欧美中文字幕在线观看| 麻豆av一区二区三区久久| 蜜臀a∨国产成人精品| 亚洲丶国产丶欧美一区二区三区| 久久综合久久久久88| 亚洲电影专区| 亚洲欧美成人精品| 免费在线看一区| 国产模特精品视频久久久久 | 久久精品色图| 亚洲第一页自拍| 亚洲视频图片小说| 久久久www成人免费精品| 欧美激情一区二区三区在线| 国产精品手机视频| 亚洲日本无吗高清不卡| 久久激情五月激情| 亚洲乱码国产乱码精品精天堂| 亚洲自拍偷拍视频| 欧美男人的天堂| 伊人色综合久久天天五月婷| 亚洲一级在线观看| 欧美激情一区二区三区在线视频观看| 在线一区欧美| 欧美激情一区二区三区蜜桃视频 | 亚洲国产一区二区精品专区| 亚洲一区二区精品视频| 欧美高清不卡在线| 樱花yy私人影院亚洲| 欧美一二三区精品| 夜夜嗨av色综合久久久综合网| 久久免费黄色| 国产一区二区在线观看免费| 午夜精品999| 日韩一区二区精品视频| 欧美福利一区二区| 亚洲欧洲日本国产| 欧美成人精品1314www| 欧美在线一二三四区| 国产日产亚洲精品| 性做久久久久久久免费看| 99视频精品全部免费在线| 欧美精品二区| 一本一本久久a久久精品综合妖精| 欧美电影在线观看完整版| 久久夜色精品一区| 在线免费观看成人网| 国产一区二区三区直播精品电影 | 国产欧亚日韩视频| 午夜精品国产| 亚洲女同在线| 国产亚洲欧美一区在线观看| 久久国产成人| 久久成人精品| 伊人久久大香线| 亚洲第一区在线| 欧美经典一区二区三区| 99热精品在线| 一区二区三区日韩精品| 国产精品欧美一区喷水| 欧美一级理论性理论a| 亚洲一二三四区| 国产日韩一区二区| 久热成人在线视频| 欧美成人精品一区二区| 亚洲视频一区在线| 亚洲免费网址| 在线观看日韩av先锋影音电影院| 欧美福利电影在线观看| 欧美伦理91| 欧美一区二区三区精品电影| 久久av一区二区| 亚洲国产婷婷综合在线精品| 亚洲人屁股眼子交8| 国产精品户外野外| 久热精品在线视频| 欧美精品日韩| 久久久福利视频| 欧美激情一区二区三区蜜桃视频| 亚洲欧美韩国| 免费成人美女女| 亚洲午夜91| 久久影视三级福利片| 9色porny自拍视频一区二区| 午夜精品在线看| 日韩一级网站| 久久久国产91| 亚洲欧美美女| 欧美77777| 久久视频在线免费观看| 欧美日韩精品一二三区| 另类春色校园亚洲| 国产精品国产一区二区| 欧美黄网免费在线观看| 国产精品自拍网站| 亚洲高清不卡| 韩国av一区二区三区四区| 国产精品99久久久久久有的能看| 好吊视频一区二区三区四区| 99精品视频免费| 亚洲黄色有码视频| 欧美一级大片在线观看| 亚洲视频在线二区| 欧美风情在线| 欧美成人性网| 精品成人一区二区三区| 一区二区三区精密机械公司 | 久久久精品动漫| 亚洲欧美视频一区| 欧美大成色www永久网站婷| 久久久久久久久久久久久9999| 欧美日韩国产亚洲一区| 亚洲国产成人porn| 亚洲国产精品一区二区第四页av | 一区二区三区高清| 免费h精品视频在线播放| 两个人的视频www国产精品| 国产亚洲亚洲| 欧美一区二区黄| 久久成人这里只有精品| 国产精品视频999| 亚洲午夜久久久久久久久电影院 | 香蕉久久久久久久av网站| 欧美日韩国产成人在线观看| 亚洲高清在线观看一区| 亚洲国产欧美一区二区三区同亚洲| 欧美在线黄色| 久久色中文字幕| 激情久久五月| 久久嫩草精品久久久久| 免播放器亚洲| 亚洲黄色性网站| 欧美激情在线狂野欧美精品| 亚洲激情在线播放| 夜夜爽夜夜爽精品视频| 欧美日韩亚洲成人| 一区二区三区欧美在线观看| 亚洲欧美日韩国产一区二区三区| 国产精品一二三四区| 欧美一区二区福利在线| 麻豆精品一区二区av白丝在线| 1024亚洲| 欧美日韩mp4| 午夜精品久久久久影视 | 午夜视频一区二区| 国产视频一区在线观看一区免费| 新67194成人永久网站| 久久综合九色九九| 亚洲经典在线| 亚洲精品日韩在线| 欧美午夜精品理论片a级大开眼界| 99精品视频免费在线观看| 欧美一区综合| 亚洲精品免费在线播放| 国产精品v欧美精品∨日韩| 午夜日韩av| 亚洲国产精品美女| 欧美一区二区三区在线视频| 在线观看91精品国产入口| 欧美日韩久久久久久| 欧美一级欧美一级在线播放| 欧美成人伊人久久综合网| 亚洲视频在线视频| 狠狠色伊人亚洲综合成人| 欧美精品七区| 久久嫩草精品久久久精品一| 在线视频亚洲欧美| 欧美黑人多人双交| 国产精品女人久久久久久| 欧美在线不卡| 99精品国产热久久91蜜凸| 久久久国际精品| 中文日韩欧美| 亚洲电影欧美电影有声小说| 国产精品国产三级欧美二区 | 国产亚洲va综合人人澡精品| 欧美国产日韩一区二区| 欧美亚洲三级| 亚洲视频免费看| 91久久国产精品91久久性色| 久久久综合香蕉尹人综合网| 亚洲性感激情| 亚洲黄网站黄| 伊人成人网在线看| 国产精品久久看| 欧美日韩三区| 欧美激情一区二区三区成人| 久久久999精品| 午夜国产欧美理论在线播放 | 亚洲欧美国产高清va在线播|