C++11怎么將sizeof用于類成員

這篇文章主要講解了“C++11怎么將sizeof用于類成員”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“C++11怎么將sizeof用于類成員”吧!

沙坡頭ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!

sizeof運(yùn)算符

sizeof運(yùn)算符返回表達(dá)式或者類型所占內(nèi)存空間的字節(jié)數(shù)。它返回一個(gè)size_t類型的常量表達(dá)式。

假設(shè)有下面的結(jié)構(gòu)體:

struct Point3d{
    int x;
    int y;
    int z;
};

可以這樣進(jìn)行初始化:

    Point3d pt;
    memset(&pt, 0, sizeof(pt));    

也可以這樣初始化:

 

    Point3d pt1;
    memset(&pt1, 0, sizeof(Point3d));    

也可以批量初始化:

    Point3d ptarray[100];
    memset(ptarray, 0, sizeof(ptarray));    

許多和內(nèi)存操作相關(guān)的處理都需要知道數(shù)據(jù)或類型占用內(nèi)存空間的大小。這時(shí)就可以使用sizeof運(yùn)算符。sizeof計(jì)算的對(duì)象可以是數(shù)據(jù),也可以是類型。

有一點(diǎn)需要注意的是,如果運(yùn)算的對(duì)象是指針,那么取得的就只能是指針本身的大小而不是指針指向數(shù)據(jù)的大小。例如下面的代碼就不能初始化所有的x數(shù)組元素。

 int x[10];
 int *p = x;
 memset(p, 0, sizeof(p)/sizeof(*p));

C++中的sizeof

假設(shè)有如下結(jié)構(gòu)體:

struct Image{
    int width;
    int height;
    char data[10000];
};

可以這樣初始化data成員:

    Image image1;
    memset(image1.data, 0, sizeof(iamge1.data));

C++11以后,也可以這樣初始化:

    Image image1;
    memset(image1.data, 0, sizeof(Image::data));

注意sizeof的的參數(shù),可以不通過(guò)對(duì)象,直接使用作用域運(yùn)算符來(lái)獲取成員的大小。

小測(cè)驗(yàn)

下面的代碼有問(wèn)題么?

    int data[100];
    constexpr size_t cnt = sizeof(data)/sizeof(*data);
    int info[cnt * 2];
    msmet(info, 0, sizeof(info));

感謝各位的閱讀,以上就是“C++11怎么將sizeof用于類成員”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)C++11怎么將sizeof用于類成員這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

當(dāng)前標(biāo)題:C++11怎么將sizeof用于類成員
本文URL:http://www.muchs.cn/article22/ghjjjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、服務(wù)器托管、、域名注冊(cè)、搜索引擎優(yōu)化、定制開(kāi)發(fā)

廣告

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

網(wǎng)站優(yōu)化排名