这篇文章主要讲解了“c++11怎么将sizeof用于类成员”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++11怎么将sizeof用于类成员”吧!sizeof运算符sizeof运算符返回表
这篇文章主要讲解了“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用于类成员这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
--结束END--
本文标题: C++11怎么将sizeof用于类成员
本文链接: https://lsjlt.com/news/295557.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0