温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-11-25 16:24:06 来源:亿速云 阅读:105 作者:iii 栏目:大数据

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI