当下面的程序没有崩溃时,我感到很惊讶。使用指针访问结构元素
typedef struct _x {
int a;
char b;
int c;
} x;
main() {
x *ptr = 0;
char *d = &ptr->b;
}
按我的理解->
运营商具有较高的优先级高于&
运营商。所以我期望程序在下面的语句中崩溃,当我们试图解引用NULL指针tr
。
char *d = &ptr->b;
但是声明&ptr->b
评估为有效地址。有人能解释我错在哪里吗?
这在某种程度上类似于`offsetof`宏。 – ruslik 2011-01-06 09:46:27