成都网站建设设计

将想法与焦点和您一起共享

C++11怎么将sizeof用于类成员

这篇文章主要讲解了“C++11怎么将sizeof用于类成员”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++11怎么将sizeof用于类成员”吧!

沙坡头ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

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用于类成员这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


文章题目:C++11怎么将sizeof用于类成员
文章出自:http://chengdu.cdxwcx.cn/article/ghjjjc.html