定义一个指针p指向结构体 p放的是结构体的首地址 这个首地址是不是指结构体中第一个成员的地址??

2024-12-23 13:54:52
推荐回答(4个)
回答1:

结构的首地址就是结构的第一个成员的地址。
内存填充只会出现在各成员之后。
默认情况下,结构体的首地址是结构中最大数据成员大小(字节)的倍数,每个数据成员的首地址均是各自大小的倍数。
对齐方式可以通过#pragma pack预处理指令更改。

回答2:

是的,结构体的内存和数组一样都是连续存储的,p+第一个成员的字节,就是第二个成员的地址,以此类推。。

回答3:

C语言应该是的,你把结构体中第一成员的地址取出来比较就知道了。

struct S
{
int value;
int value2;
};

struct S s;
struct S* p = &s;
int * pi = &p->value;
if ( p == (void*)pi )
{
}

回答4:

是的!