首页 > 后端开发 > C++ > 为什么我的 C Char 成员地址打印为空白,并且为什么有​​ 8 字节偏移?

为什么我的 C Char 成员地址打印为空白,并且为什么有​​ 8 字节偏移?

Susan Sarandon
发布: 2025-01-03 02:51:38
原创
824 人浏览过

Why Does My C   Char Member's Address Print Blank, and Why Is There an 8-Byte Offset?

调试地址打印异常

在涉及具有 int、char 和 string 数据成员的类的 C 程序中,打印它们的地址会引发眉。当访问 char 成员时,输出神秘地保持空白。此外,将公共 char 成员转换为 void 指针会显示偏移量为 8,需要进一步调查。

缺少 Char 地址:

空白 char 地址的问题输出源于 & 运算符的解释方式。默认情况下,在 char 变量上使用 & 将返回指向 C 样式字符串 (char) 的指针。这会导致过载

解决问题:

打印char 成员的地址正确,需要显式转换为 void*。此强制转换表明该指针应被视为通用指针,从而防止

cout << "address of char   :" << (void*) &b << endl;
登录后复制

或者,使用 static_cast 是在现代 C 中转换指针的更安全且首选的方法:

cout << "address of char   :" << static_cast<void*>( &b ) << endl;
登录后复制

公共成员中的偏移量为 8:

当int、char、string成员为public时,地址之间的偏移量char 和 string 成员的总数始终为 8。这是因为在公共类中,成员变量按照声明的顺序排列在类结构中。因此,字符串成员位于字符成员之后,固定偏移量为 8 个字节。

以上是为什么我的 C Char 成员地址打印为空白,并且为什么有​​ 8 字节偏移?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板