对象表示概念的定义在3.9 / 4中给出:
[basic.types]
类型T的对象的对象表示是N的序列 由类型T的对象占用的unsigned char对象,其中N等于
sizeof(T)
。
但是sizeof
运算符的定义如下:
[expr.sizeof]
sizeof运算符产生对象中的字节数 其操作数的表示。
特别是:
当应用于类时,结果是一个字节数 该类的对象,包括放置所需的任何填充 数组中该类型的对象
我想通过例子来考虑这个定义:
struct A {
int a; //sizeof(a) is implementation defined
long b; //sizeof(b) is implementation defined
char c; //sizeof(c) is 1 by definition
// Padding, problbly equals to 3 butes
}
如何通过实施计算sizeof(A)
?我们只计算sizeof(a) + sizeof(b) + sizeof(c) + padding
的总和。
但required for placingobjects of that type in an array
的条件是什么?
答案 0 :(得分:0)
您可以简单地将struct的大小计算为:
long size = sizeof(struct A);
如果你想要一个struct A
,
struct A arr[/* Size of array */];