引用C结构而不引用成员

时间:2013-10-07 00:42:42

标签: c struct

typedef struct s {
  int x;
  int y;
} S;

typedef struct t {
  S s;
}

T t = {0};
T *pointer_to_T = &t;


printf("End address %x", pointer_to_T->s);
printf("Beginning address %x", &(pointer_to_T->s));

根据我的测试,pointer_to_T-> s是结构S的结尾地址

pointer_to_T->s - &(pointer_to_T->s) = sizeof(S)

这里的预期行为是什么?或者这只是巧合?

2 个答案:

答案 0 :(得分:2)

此处的预期行为可以从打印垃圾到nasal demons,因为此行为未定义。 %x说明符使printf期望一个整数但它得到一个结构,所以一切皆有可能。这里最有可能发生的是它会打印s.x,但同样可能会产生一个单向门户Петропа́вловск-Камча́тский

答案 1 :(得分:0)

结构元素不是指针。它不会打印任何结构的地址。这只是垃圾值,你正在考虑作为结束地址。垃圾是未定义的。

结构元素不是指向数组的指针。

%x - 打印十六进制整数