c++ - sizeof(struct name_of_struct) 与 sizeof(name_of_struct) 的区别?
问题描述
有什么区别:
sizeof(struct name_of_struct)
对比
sizeof(name_of_struct)
主题的返回值是相同的。
两者有什么区别吗?即使它很微妙/不重要,我也想知道。
解决方案
struct name_of_struct
明确地指代struct
/class
标记name_of_struct
,而name_of_struct
可能是变量或函数名称。
例如,在 POSIX 中,您同时拥有struct stat
和 一个名为 的函数stat
。当您想引用结构类型时,您需要struct
关键字来消除歧义(+ 纯 C 始终需要它 - 在纯 C 中,常规标识符位于与结构标签不同的命名空间中,并且结构标签不会泄漏到常规标识符中命名空间就像它们在 C++ 中所做的那样,除非您使用 typedef 显式将它们拖到那里,如typedef struct tag{ /*...*/ } tag;
)。
struct foo{ char x [256];};
void (*foo)(void);
int structsz(){ return sizeof(struct foo); } //returns 256
int ptrsz(){ return sizeof(foo); } //returns typically 8 or 4
如果这看起来令人困惑,那么它的存在基本上是为了保持与 C 的向后兼容性。
推荐阅读
- c# - ACMEv1 上的帐户创建已禁用 - Let's Encrypt
- angular - 带卡滑块的角 ngb 旋转木马
- android - 如何检查 Manifest.permission.MANAGE_EXTERNAL_STORAGE 是否被授予?
- javascript - 移动导航栏工作不正确
- sql - 删除重复行Sql
- python - 如何将组合一组数字列表的所有可能性与 Python 中请求的数字列表进行比较?
- javascript - TypeError:无法读取节点应用程序中未定义的属性“修剪”
- regex - 在 Windows 上的 Perl 中取消注释 XML
- node.js - Strapi API 使用 Nuxt/Strapi 模块为经过身份验证的用户提供 401
- node.js - React 应用程序使用 ARjs 显示 NFT 标记错误。如何解决?