c/c++开发分享sizeof()函数如何适用于C中的Structures?

结构定义如下

typedef struct Sample { int test; char strtest; } Sample; 

在Main Function中,我将Sizeof称为结构。

 sizeof(struct Sample) 

我听说sizeof在结构上的返回值可能不正确。 如果是这种情况,我该怎么做才能获得正确的价值?

    它确实返回了一个可靠的值 – 并不总是你期望的价值。

    在Sample结构中,假设一个1字节的char和4字节的int,但是你没有得到“5”的结果。

    因为结构是填充的,所以元素从它们的自然边界开始。 你更有可能得到“8”的结果。

    Wiki很好地解释了这一点: http : //en.wikipedia.org/wiki/Sizeof – 位于底部附近的“Structure Padding”。

    Sizeof不是一个函数; 它是一个运营商 。 它的结果始终是正确的,但有时是意外的,因为填充,或者认为它是一个神奇的数组大小确定器。

    作为运算符,如果在变量中操作,则不需要括号。

      int foo; printf("%zun", sizeof foo); 

    是完全合法的。

    具有结构类型的sizeof与任何其他类型一样工作:运算符的结果是以字节为单位的类型的大小。 结构类型的大小与此结构类型的对象的大小相同。

    由于填充,结构对象的大小可以大于结构类型的不同元素的大小。

    在每个结构成员之后可以填充未指定数量的字节,并且在结构类型(或结构类型的对象)的大小中考虑填充

    要打印结构类型的大小,请使用printf格式字符串中的z转换说明符:

     printf("%zun", sizeof (struct my_structure_type)); 

    在这里,您可以阅读更多内容: http : //somectips.wordpress.com/2012/01/05/what-is-the-size-of-struct/

      以上就是c/c++开发分享sizeof()函数如何适用于C中的Structures?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545843.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注