结构的第一个元素的偏移量为 0 是否是保证?
为了更准确,让我们考虑一下
struct foo {
int a;
double b;
};
struct foo *ptr=malloc(sizeof(struct foo));
int *int_ptr = &ptr->a;
free(int_ptr)
是否保证它在任何操作系统或任何其他因素下始终有效?
是的,这是有保证的。会给你一个标准报价,让我查一下。
C99 标准:§6.7.2.1
Para 12
在结构体对象中,非位域成员和位域所在的单元
驻留地址按声明顺序递增。一个指向a的指针
结构对象,经过适当转换,指向其初始成员(或者如果该成员是
位域,然后到它所在的单元),反之亦然。可能还有未命名的
在结构对象内填充,但不在其开头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)