如果ptr
是一个指针而且它指向一个结构,那么ptr
的值会给出什么?
这是否类似于指向Complete数组的指针,以及当被要求使用间接运算符赋予其值时它给出的值?
答案 0 :(得分:2)
指针的值(即地址的 地址,而不是地址的值)是结构的地址,也是与结构的第一个成员的地址相同。
在结构的第一个成员之后,其他成员跟随,但成员之间可能有填充字节(但在第一个成员之前将没有填充字节),并且可能有非额外的填充字节结构的结束。
例如,给出以下代码:
struct foo
{
char a;
int b;
float c;
};
struct foo f;
我们可以说&f == &f.a
(忽略类型安全)。 a
和b
之间,b
和c
之间以及c
之后可能会有一些额外的填充。但我们知道,在内存中,b
位于a
之后,c
位于b
之后。