I am wondering why the following two types
struct {
double re[2];
};
and
double re[2];
have the same size in C? Doesn't struct add a bit of size overhead?
I am wondering why the following two types
struct {
double re[2];
};
and
double re[2];
have the same size in C? Doesn't struct add a bit of size overhead?
No it doesnt.
That's one of the good points of structs (why they were so helpful in old school TCP/IP programming).
It's a good way to represent the memory/buffer layout.
No, it just merely composes all the elements into one higher-level element whose size is merely the individual elements' sizes added up (plus some padding depending on alignment rules, but that's out of the scope of this question).
sometmes, see: http://en.wikipedia.org/wiki/Sizeof
Not if it can help it - no. C avoids overhead like the plague. And specifically, it avoids overhead in this context.
If you used a different structure, you might see a difference:
If your machine requires
double
to be aligned on an 8-byte boundary (andsizeof(double) == 8
, which is normal but not mandated by the standard), then you will find that the structure occupies 16 bytes.No. Struct does not add any size, or have any overhead in the compiled C.
It is a layer of syntax that requires additional work by the compiler, but has no overhead at runtime.
C is an extremely "naked" language, meaning that nothing is there unless required. So ask yourself, "What overhead does a struct REQUIRE?", and you won't find any.
no the struct type in C just sequentially layout the members in memory