這篇文章主要講解了“C++11怎么將sizeof用于類成員”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++11怎么將sizeof用于類成員”吧!
sizeof運算符
sizeof運算符返回表達式或者類型所占內存空間的字節數。它返回一個size_t類型的常量表達式。
假設有下面的結構體:
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));
許多和內存操作相關的處理都需要知道數據或類型占用內存空間的大小。這時就可以使用sizeof運算符。sizeof計算的對象可以是數據,也可以是類型。
有一點需要注意的是,如果運算的對象是指針,那么取得的就只能是指針本身的大小而不是指針指向數據的大小。例如下面的代碼就不能初始化所有的x數組元素。
int x[10];
int *p = x;
memset(p, 0, sizeof(p)/sizeof(*p));
C++中的sizeof
假設有如下結構體:
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的的參數,可以不通過對象,直接使用作用域運算符來獲取成員的大小。
小測驗
下面的代碼有問題么?
int data[100];
constexpr size_t cnt = sizeof(data)/sizeof(*data);
int info[cnt * 2];
msmet(info, 0, sizeof(info));
感謝各位的閱讀,以上就是“C++11怎么將sizeof用于類成員”的內容了,經過本文的學習后,相信大家對C++11怎么將sizeof用于類成員這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。