• <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>
            posts - 15, comments - 8, trackbacks - 0, articles - 2

            關于sizeof

            Posted on 2010-08-03 21:06 小天狼星 閱讀(469) 評論(0)  編輯 收藏 引用

                   前段時間接連到公司面試,其中這些公司包括什么華為,文思創新以及其他一些不出名的或忘了叫什么名字的垃圾公司,跑了不少路,做了不少的筆試題,感覺關于sizeof的運算相關的題目較多,自己將題做的一片糊涂,回來后親自寫了實驗來驗證。先帖代碼:

            #include <iostream>
            using namespace std;
            struct t
            {
                
            char l;
                
            float a;
                
            int b[3];
            }
            ;
            void func(char ch[100])
            {
                cout 
            << "sizeof ch :" <<sizeof(ch) <<endl;
            }


            void main()
            {
                
            char * s = "hello";
                    char c ;
                
            char d[]  = "hello";
                
            char r[100];
                func(r);
                cout 
            << “sizeof s :”<<sizeof(s)<<endl

                           <<"sizeof c" <<sizeof(c)<<endl

                            
            << "sizeof d[] = hello : " << sizeof(d) <<endl 

                       
            << "sizeof t :"<<sizeof(t) <<endl 

                           
            <<"sizeof char r[100] : "<< sizeof(r) <<endl;
            }


            再帖轉載來的6條理論:

            sizeof操作符的結果類型是size_t,它在頭文件中typedef為unsigned int類型。該類型保證能容納實現所建立的最大對象的字節大小。

               1、若操作數具有類型char、unsigned char或signed char,其結果等于1。

                     ANSI C正式規定字符類型為1字節。

               2、int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、float、double、long double類型的sizeof 在ANSI C中沒有具體規定,大小依賴于實現,一般可能分別為4、4、2、2、4、4、4、8、10。
                           
                           sizeof(c) = 1;

               3、當操作數是指針時,sizeof依賴于編譯器。例如Microsoft C/C++7.0中,near類指針字節數為2,far、huge類指針字節數為4。一般Unix的指針字節數為4。

                           對于示例程序中的sizeof s,根據第3條,s是個字符串的指針,輸出為   sizeof s :4


               4、當操作數具有數組類型時,其結果是數組的總字節數。

                            對于sizeof d[] ,根據第4條,d是數組類型,返回的是數組的字節數再加上末尾的null一字節,sizeof d[] = hello : 6


               5、聯合類型操作數的sizeof是其最大字節成員的字節數。結構類型操作數的sizeof是這種類型對象的總字節數,包括任何墊補在內。

                      讓我們看如下結構:

                      struct {char b; double x;} a;

                      在某些機器上sizeof(a)=12,而一般sizeof(char)+ sizeof(double)=9。

                      這是因為編譯器在考慮對齊問題時,在結構中插入空位以控制各成員對象的地址對齊。如double類型的結構成員x要放在被4整除的地址。
                            對于sizeof t ,對齊后t的大小為20故輸出結果為sizeof t :20


               6、如果操作數是函數中的數組形參或函數類型的形參,sizeof給出其指針的大小。
                             sizeof ch :4

            国产成人精品久久亚洲| 青青青国产精品国产精品久久久久| 国产精品成人无码久久久久久| 一本一道久久精品综合| 久久精品国产精品亚洲| 亚洲色欲久久久综合网| 精品蜜臀久久久久99网站| 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久久久99精品成人片| 亚洲AV日韩精品久久久久| 国产99久久久久久免费看| 波多野结衣AV无码久久一区| 青青草原1769久久免费播放| 97精品伊人久久大香线蕉| 久久久国产精品亚洲一区| 四虎影视久久久免费| 99久久无码一区人妻| 久久夜色精品国产噜噜麻豆| 老司机午夜网站国内精品久久久久久久久 | 狠狠色丁香婷婷综合久久来来去| 国产精品久久久久久久久软件| 99久久久国产精品免费无卡顿| 伊人 久久 精品| 久久婷婷色综合一区二区| 久久亚洲高清观看| 2021少妇久久久久久久久久| 久久人妻AV中文字幕| 亚洲国产精品无码久久九九| 国产精品永久久久久久久久久| 国产精品18久久久久久vr| 无码超乳爆乳中文字幕久久| 精品国产日韩久久亚洲| 伊人久久大香线蕉综合5g| 亚洲国产精品综合久久一线| 日日狠狠久久偷偷色综合96蜜桃| 久久久久久久国产免费看| 欧美一级久久久久久久大片| 亚洲精品国精品久久99热| 亚洲欧美日韩精品久久亚洲区 | 国产精品伊人久久伊人电影 |