溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2021-11-25 16:24:06 來源:億速云 閱讀:117 作者:iii 欄目:大數(shù)據(jù)

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

sizeof運算符

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

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

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

可以這樣進行初始化:

    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)存空間的大小。這時就可以使用sizeof運算符。sizeof計算的對象可以是數(shù)據(jù),也可以是類型。

有一點需要注意的是,如果運算的對象是指針,那么取得的就只能是指針本身的大小而不是指針指向數(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ù),可以不通過對象,直接使用作用域運算符來獲取成員的大小。

小測驗

下面的代碼有問題么?

    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)過本文的學習后,相信大家對C++11怎么將sizeof用于類成員這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI