sizeof(struct name_of_struct)与sizeof(name_of_struct)之间的区别?

时间:2019-06-13 19:33:34

标签: c++

两者之间有什么区别

sizeof(struct name_of_struct)

vs

sizeof(name_of_struct)

主题的返回值相同。

两者之间有区别吗?即使它很微妙/不重要,我也想知道。

3 个答案:

答案 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将它们显式地拖到那里。

Example:

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)

将为您提供对象的大小。