指针及其与结构和数组的行为

时间:2014-03-23 08:06:54

标签: c

如果ptr是一个指针而且它指向一个结构,那么ptr的值会给出什么? 这是否类似于指向Complete数组的指针,以及当被要求使用间接运算符赋予其值时它给出的值?

1 个答案:

答案 0 :(得分:2)

指针的值(即地址的 地址,而不是地址的值)是结构的地址,也是与结构的第一个成员的地址相同。

在结构的第一个成员之后,其他成员跟随,但成员之间可能有填充字节(但在第一个成员之前将没有填充字节),并且可能有非额外的填充字节结构的结束。

例如,给出以下代码:

struct foo
{
    char a;
    int b;
    float c;
};

struct foo f;

我们可以说&f == &f.a(忽略类型安全)。 ab之间,bc之间以及c之后可能会有一些额外的填充。但我们知道,在内存中,b位于a之后,c位于b之后。