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

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

Blog @ Blog

當華美的葉片落盡,生命的脈絡才歷歷可見。 -- 聶魯達

常用鏈接

統(tǒng)計

積分與排名

BBS

Blog

Web

最新評論

sizeof()用法匯總[轉]

轉自:http://blog.programfan.com/article.asp?id=19802

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

3.格式的寫法
   sizeof操作符,對變量或對象可以不加括號,但若是類型,須加括號。
4.使用sizeof時string的注意事項
   string s="hello";
   sizeof(s)等于string類的大小,sizeof(s.c_str())得到的是與字符串長度。
5.union 與struct的空間計算
   總體上遵循兩個原則:
   (1)整體空間是
占用空間最大的成員(的類型)所占字節(jié)數的整倍數
   (2)數據對齊原則----內存按結構成員的先后順序排列,當排到該成員變量時,其前面已擺放的空間大小必須是該成員類型大小的整倍數,如果不夠則補齊,以此向后類推。。。。。
   注意:數組按照單個變量一個一個的擺放,而不是看成整體。如果成員中有自定義的類、結構體,也要注意數組問題。

例:[引用其他帖子的內容]
因為對齊問題使結構體的sizeof變得比較復雜,看下面的例子:(默認對齊方式下)
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類型,但是因為對齊問題,導致他們的大小不同。計算結構體大小可以采用元素擺放法,我舉例子說明一下:首先,CPU判斷結構體的對界,根據上一節(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,結構體在地址21處結束。由于s1的大小需要是8的倍數,所以21-23的空間被保留,s1的大小變成了24
 
對于s2,首先把a放到8的對界,假定是0,此時下一個空閑地址是1,下一個元素的對界也是1,所以b擺放在1,下一個空閑地址變成了2;下一個元素c的對界是4,所以取離2最近的地址4擺放c,下一個空閑地址變成了8,下一個元素d的對界是8,所以d擺放在8,所有元素擺放完畢,結構體在15處結束,占用總空間為16,正好是8的倍數。

這里有個陷阱,對于結構體中的結構體成員,不要認為它的對齊方式就是他的大小,看下面的例子:
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中才有這樣的差異。
 
所以,在自己定義結構體的時候,如果空間緊張的話,最好考慮對齊因素來排列結構體里的元素。
補充:不要讓double干擾你的位域
  在結構體和類中,可以使用位域來規(guī)定某個成員所能占用的空間,所以使用位域能在一定程度上節(jié)省結構體占用的空間。不過考慮下面的代碼:
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類型放在程序的開始或者最后。

相關參數:
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 閱讀(229) 評論(0)  編輯 收藏 引用 所屬分類: C++基礎

廣告信息(免費廣告聯系)

中文版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>
            91久久久亚洲精品| 国产精品毛片a∨一区二区三区|国| 久久精品人人做人人爽电影蜜月| 亚洲国产精品成人精品| 国产一区在线播放| 国产乱人伦精品一区二区| 欧美日韩不卡在线| 欧美刺激性大交免费视频| 欧美大香线蕉线伊人久久国产精品| 久久免费国产精品1| 久久亚洲图片| 91久久线看在观草草青青| 六月婷婷久久| 亚洲午夜一二三区视频| 亚洲日本欧美天堂| 亚洲另类黄色| 在线视频精品一| 亚洲一区二区三区精品在线| 99日韩精品| 在线亚洲欧美视频| 亚洲自拍偷拍一区| 午夜视频精品| 欧美在线网址| 免费视频久久| 亚洲国产另类 国产精品国产免费| 亚洲一二三级电影| 这里只有精品电影| 午夜精品成人在线视频| 欧美一区二区三区四区在线观看| 先锋影音久久| 蜜桃av噜噜一区二区三区| 欧美.com| 99视频精品全部免费在线| 亚洲精品乱码久久久久久黑人| 日韩午夜一区| 午夜影院日韩| 欧美88av| 国产精品视频男人的天堂| 在线观看欧美成人| 一区二区三区在线免费观看| 日韩视频国产视频| 性伦欧美刺激片在线观看| 麻豆av福利av久久av| 久热国产精品| 一本色道久久综合亚洲精品小说| 午夜精品久久久久久久99热浪潮 | 亚洲日本黄色| 久久久久久久高潮| 最新亚洲电影| 亚洲激情自拍| 午夜久久福利| 欧美成人免费小视频| 国产精品素人视频| 亚洲激情精品| 欧美黄色日本| 亚洲欧美在线播放| 国产精品久久一区主播| 夜夜嗨av一区二区三区免费区 | 久久综合久久综合这里只有精品| 一本色道久久加勒比精品| 欧美www在线| 最近看过的日韩成人| 欧美国产三级| 美女网站久久| 亚洲第一天堂无码专区| 老司机精品视频网站| 久久久久久久久久看片| 激情综合色丁香一区二区| 久久久视频精品| 欧美一区二区精品在线| 国产视频精品免费播放| 欧美一级二级三级蜜桃| 午夜在线精品| 极品少妇一区二区| 欧美国产免费| 欧美v日韩v国产v| 亚洲精品久久久久中文字幕欢迎你| 欧美国产国产综合| 欧美日韩精品二区第二页| 亚洲天堂av电影| 亚洲视频中文字幕| 韩国三级电影久久久久久| 欧美成ee人免费视频| 欧美另类高清视频在线| 亚洲永久在线| 欧美中文字幕视频| 亚洲国产精品久久久久秋霞蜜臀| 欧美激情91| 国产精品一区二区久久| 欧美高清视频一二三区| 欧美日韩免费精品| 久久精品视频播放| 欧美精品成人在线| 久久国产精品99久久久久久老狼 | 国产精品拍天天在线| 久久亚洲一区二区三区四区| 欧美黄色大片网站| 欧美制服丝袜第一页| 欧美电影美腿模特1979在线看 | 久久高清免费观看| 欧美精品二区| 久久视频这里只有精品| 久久综合一区二区| 午夜国产精品影院在线观看| 欧美一区二区视频网站| 老司机午夜精品| 亚洲二区在线视频| 老色批av在线精品| 亚洲日本无吗高清不卡| 亚洲深夜福利在线| 一色屋精品视频在线观看网站| 欧美日本一区二区三区| 亚洲免费一在线| 99精品国产99久久久久久福利| 久久国产欧美日韩精品| 99精品视频免费观看视频| 在线看一区二区| 国产日韩一区二区| 国产精品影院在线观看| 欧美日韩在线第一页| 免费不卡亚洲欧美| 裸体一区二区| 女主播福利一区| 欧美激情按摩| 欧美极品一区| 欧美视频官网| 国产精品高精视频免费| 国产精品美女一区二区| 国产精品久久久久秋霞鲁丝| 欧美视频在线观看一区| 国产精品久久久久久久一区探花| 欧美日韩国产一区精品一区 | 久久午夜精品| 欧美成人在线网站| 亚洲精品久久久久久久久久久久久 | 亚洲高清视频的网址| 免费看黄裸体一级大秀欧美| 欧美电影免费网站| 欧美成人黄色小视频| 亚洲精品美女在线| 久久国产精品免费一区| 欧美精品在线观看| 国内精品美女av在线播放| 99re视频这里只有精品| 久久精品视频在线看| 最新69国产成人精品视频免费| 亚洲尤物在线| 欧美性猛交视频| 亚洲欧洲在线免费| 久久香蕉国产线看观看av| 亚洲人成网站在线观看播放| 欧美一级久久久| 国产精品v欧美精品∨日韩| 欧美成人一区二区三区在线观看| 久久久久.com| 国产精品免费在线| 亚洲午夜久久久久久尤物 | 欧美日韩免费一区| 亚洲国产精品久久精品怡红院| 另类激情亚洲| 欧美大色视频| 亚洲视频欧美视频| 亚洲精品久久久一区二区三区| 美女主播精品视频一二三四| 亚洲国产一区二区精品专区| 久色成人在线| 欧美国内亚洲| 亚洲一区二区在| 亚洲欧美日韩天堂| 一区在线视频| 亚洲国产欧美日韩精品| 欧美第十八页| 亚洲欧美日本另类| 久久亚洲精品欧美| 正在播放日韩| 久久精品亚洲一区| 欧美精品播放| 亚洲久久视频| 一本色道88久久加勒比精品 | 久久久免费精品视频| 日韩小视频在线观看专区| 在线午夜精品| 亚洲最新合集| 免费在线亚洲| 久久久中精品2020中文| 欧美日韩国产高清视频| 你懂的网址国产 欧美| 国产精品超碰97尤物18| 亚洲国产精品一区二区第四页av| 国产精品一区二区久激情瑜伽| 亚洲国产成人午夜在线一区| 国产午夜久久久久| 亚洲一区二区精品视频| 一区二区成人精品| 欧美国产精品| 亚洲精品在线看| 99re6热在线精品视频播放速度| 米奇777超碰欧美日韩亚洲| 久久伊人免费视频| 精品福利免费观看|