sizeof()函数如何适用于C中的Structures?

Kar*_*rai 6 c struct

结构定义如下

typedef struct Sample
{
  int test;
  char strtest;
} Sample;
Run Code Online (Sandbox Code Playgroud)

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

sizeof(struct Sample)
Run Code Online (Sandbox Code Playgroud)

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

kar*_*hik 22

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

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

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

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