两者之间有什么区别
sizeof(struct name_of_struct)
vs
sizeof(name_of_struct)
主题的返回值相同。
两者之间有区别吗?即使它很微妙/不重要,我也想知道。
答案 0 :(得分:28)
struct name_of_struct
明确地指向标记为struct
的{{1}} / class
,而name_of_struct
可以是变量或函数名。
例如,在POSIX中,您同时拥有name_of_struct
和一个名为struct stat
的函数。当您要引用结构类型时,需要使用stat
关键字来消除歧义(+普通C总是需要它-在普通C中,常规标识符与struct标记位于单独的命名空间中,而struct标记则不存在像在C ++中一样,泄漏到常规标识符名称空间中,除非您像struct
中那样使用typedef将它们显式地拖到那里。
typedef struct tag{ /*...*/ } tag;
如果这看起来令人困惑,则基本上是为了保持与C的向后兼容性。
答案 1 :(得分:0)
据我所知:区别在于c样式结构符号与C ++符号。
答案 2 :(得分:0)
当然
sizeof name_of_struct
仅当name_of_struct是一个对象(不仅是类型)时,是有效的表达式;写作
sizeof(struct name_of_struct)
除非已经将name_of_struct(完整类型)定义为struct(或类),否则将不会编译。但是,等等,还有更多!如果两者都存在
sizeof(struct name_of_struct)
将为您提供类型的大小,而不是对象的大小,而两者都会
sizeof(name_of_struct)
和
(sizeof name_of_struct)
将为您提供对象的大小。