我想知道下面的结构在内存中是如何存储的。
给定的结构尺寸通过使用
sizeof()
显示为 28。我想知道为什么会这样?
typedef struct {
char a[10];
int c;
char b[10];
}example4;
printf("%ld\n", sizeof(example4));
我已经了解填充,但不知道它如何应用于不同长度的字符串。 我使用以下 printf 来知道内存地址
printf("%p %p %p %p %p\n", (void*)&(example4.a), (void*)&(example4.b), (void*)&(example4.c), (void*)&(example4.a[0]), (void*)&(example4.b[0]));
但是没有成功。
您会收到编译器错误,因为为了打印变量的地址,您需要一个具体的实例(并且
example4
是类型,而不是实例):
example4 ex4;
printf("%p %p %p %p %p\n",
(void*)&(ex4.a),
(void*)&(ex4.b),
(void*)&(ex4.c),
(void*)&(ex4.a[0]),
(void*)&(ex4.b[0]));
另一个问题是
printf
的正确 size_t
格式说明符是 "%zu"
:
printf("%zu\n", sizeof(example4));