• <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

            關(guān)于sizeof

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

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

            #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;
            }


            再帖轉(zhuǎn)載來的6條理論:

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

               1、若操作數(shù)具有類型char、unsigned char或signed char,其結(jié)果等于1。

                     ANSI C正式規(guī)定字符類型為1字節(jié)。

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

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

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


               4、當(dāng)操作數(shù)具有數(shù)組類型時(shí),其結(jié)果是數(shù)組的總字節(jié)數(shù)。

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


               5、聯(lián)合類型操作數(shù)的sizeof是其最大字節(jié)成員的字節(jié)數(shù)。結(jié)構(gòu)類型操作數(shù)的sizeof是這種類型對象的總字節(jié)數(shù),包括任何墊補(bǔ)在內(nèi)。

                      讓我們看如下結(jié)構(gòu):

                      struct {char b; double x;} a;

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

                      這是因?yàn)榫幾g器在考慮對齊問題時(shí),在結(jié)構(gòu)中插入空位以控制各成員對象的地址對齊。如double類型的結(jié)構(gòu)成員x要放在被4整除的地址。
                            對于sizeof t ,對齊后t的大小為20故輸出結(jié)果為sizeof t :20


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


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产精品99久久久久久人| 久久九色综合九色99伊人| 伊人热人久久中文字幕| 国产成人精品综合久久久久 | 四虎国产精品成人免费久久 | 久久精品国产亚洲av瑜伽| 久久久久人妻一区二区三区vr| 久久露脸国产精品| 久久久无码精品午夜| 国产午夜精品久久久久九九电影 | 久久精品女人天堂AV麻| 精品免费久久久久国产一区| 国产成人久久精品二区三区| 麻豆精品久久精品色综合| 久久久久久a亚洲欧洲aⅴ| 99久久国产热无码精品免费久久久久 | 色欲av伊人久久大香线蕉影院 | 久久亚洲AV成人无码软件| 久久婷婷五月综合97色直播| 无码国产69精品久久久久网站| 久久综合给合久久狠狠狠97色69| 国内精品久久久久影院日本| 久久99国产精一区二区三区| 久久精品无码专区免费| 精品欧美一区二区三区久久久| 久久久久无码精品| 亚洲人成无码久久电影网站| 亚洲精品国产字幕久久不卡| 狠狠色丁香婷婷综合久久来| 青青热久久国产久精品 | 色综合合久久天天综合绕视看| 精品欧美一区二区三区久久久| 久久精品国产亚洲av水果派| 久久精品国产清自在天天线| 国产精品久久久久…| 久久国产欧美日韩精品| 久久久这里有精品| 久久中文字幕无码专区| 久久香蕉国产线看观看99| 国产精品久久久久久吹潮| 精品熟女少妇a∨免费久久|