<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • 關(guān)鍵字sizeof及其十大特性

                 Sizeof是c/c++中的關(guān)鍵字,它是一個運算符,其作用是取得一個對象(數(shù)據(jù)類型或數(shù)據(jù)對象)的長度(即占用內(nèi)存的大小,以byte為單位)。其中類型包括基本數(shù)據(jù)類型(不包括void)、用戶自定義類型(結(jié)構(gòu)體、類)、函數(shù)類型。數(shù)據(jù)對象是指用前面提到的類型定義的普通變量和指針變量(包含void指針)。

            專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)烏拉特前免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

            十大特性:

            特性0:sizeof是運算符,不是函數(shù);

            特性1:sizeof不能求void類型的長度;

            特性2:sizeof能求void類型的指針的長度;

               其實指針也是變量,只不過這個變量很特殊,它是存放其它變量地址的變量,目前32位計算機(jī)平臺下的指針變量的大小為4。

            特性3:sizeof能求得靜態(tài)分配內(nèi)存的數(shù)組的長度;

            注意:用sizeof求字符串的長度時要加上末尾的‘/0’。

            例:

            void fun(int array[10])

            {

            int n = sizeof(array);

            }

            編輯程序:

            #include<iostream>

            using namespace std;

            int fun(int array[10])

            {

            int n = sizeof(array);

            return n;

            }

            int main()

            {

            int ret;

            int array[10] = { 0 };

            ret = fun(array);

            cout << ret << endl;

            system("pause");

            return 0;

            }

            運行結(jié)果:

            4

            請按任意鍵繼續(xù). . .

                在fun類n的值為4,而不是40,這是因為在函數(shù)參數(shù)傳遞時,數(shù)組被轉(zhuǎn)化成指針了,假如直接傳遞整個數(shù)組的話,那么必然涉及到數(shù)組元素的拷貝(實參到形參的拷貝),當(dāng)數(shù)組非常大時,會導(dǎo)致函數(shù)執(zhí)行效率極低,而只傳遞數(shù)組的地址(即指針),只需要拷貝4byte。

            特性4:sizeof不能求動態(tài)分配的內(nèi)存的大?。?/p>

            特性5:sizeof不能對不完整的數(shù)組求長度,否則會編譯出錯;

            特性6:當(dāng)表達(dá)式作為sizeof的操作數(shù)時,它返回的是表達(dá)式計算結(jié)果的類型大小,但是它不對表達(dá)式求值;

            例:程序:

            #include<iostream>

            using namespace std;

            int main()

            {

            char ch = 1;

            int num = 1;

            int n1 = sizeof(ch + num);

            int n2 = sizeof(ch = ch + num);

            cout << "n1=" << n1 << endl;

            cout << "n2=" << n2 << endl;

            system("pause");

            return 0;

            }

            結(jié)果:

            n1=4

            n2=1

            請按任意鍵繼續(xù). . .

                由于默認(rèn)類型轉(zhuǎn)換的原因,表達(dá)式ch + num的計算結(jié)果類型為int,因此n1=4;而ch=ch + num的計算結(jié)果為char,雖然在計算ch + num時結(jié)果為int,當(dāng)把結(jié)果賦給ch時又進(jìn)行了類型轉(zhuǎn)換,因此表達(dá)式的最終類型還是char,故n2=1。

            特性7:sizeof可以對函數(shù)調(diào)用求大小,并且求得的大小等于返回類型(函數(shù)類型)的大小,但是不執(zhí)行函數(shù)體;

            特性8:sizeof求得的結(jié)構(gòu)體(及其對象)的大小并不等于各個數(shù)據(jù)成員對象的大小之和;

            規(guī)則:

            a.結(jié)構(gòu)體的大小等于結(jié)構(gòu)體內(nèi)最大成員大小的整數(shù)倍;

            b.結(jié)構(gòu)體內(nèi)的成員的首地址相對于結(jié)構(gòu)體的首地址的偏移量是其類型的整數(shù)倍,比如說double型成員相對于結(jié)構(gòu)體的首地址的地址偏移量應(yīng)該是8的倍數(shù);

            c.為了滿足規(guī)則1和2,編譯器會在結(jié)構(gòu)體成員之后進(jìn)行字節(jié)填充;

            例:程序:

            #include<iostream>

            using namespace std;

            int main()

            {

            struct A

            {

            int num1 = 0;

            int num2 = 0;

            double num3 = 0;

            };

            struct B

            {

            int n1 = 0;

            double n2 = 0;

            int n3 = 0;

            };

            cout << "A=" << sizeof(A) << endl;

            cout << "B=" << sizeof(B) << endl;

            system("pause");

            return 0;

            }

            結(jié)果:

            A=16

            B=24

            請按任意鍵繼續(xù). . .

            sizeof(A):4+4+8=16

            sizeof(B):4(n1占用地址空間:0,1,2,3)+4(不夠8的倍數(shù)填充4個地址空間,4,5,6,7)+8(n2占用地址空間:8-15)+4(n3占用地址空間:16-19)+4(不夠8的倍數(shù)填充4個,20,21,22,23)=24。

            特性9:sizeof不能用于求結(jié)構(gòu)體的位域成員的大小,但是可以求得包含位域成員的結(jié)構(gòu)體的大小。

            分享文章:關(guān)鍵字sizeof及其十大特性
            本文來源:http://www.jbt999.com/article40/iipiho.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、全網(wǎng)營銷推廣外貿(mào)網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、軟件開發(fā)、網(wǎng)站內(nèi)鏈

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

            綿陽服務(wù)器托管

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 日本黄色视频在线 | 亚洲欧洲在线aa观看视频 | 四虎影院毛片 | 色情网站免费在线观看 | 成年人精品|