我遇到了以下代码,它找到了结构中成员的偏移量。但是我无法弄清楚为什么它不会崩溃,即使它试图取消一个NULL指针
struct a_
{
int a;
int b;
};
int main()
{
int offset = &(((struct a_ *) 0x0)->b);
printf ("offset of b = %x\n", offset);
}
Output = 4
答案 0 :(得分:4)
但是我无法弄清楚为什么它不会崩溃,即使它试图取消一个NULL指针。
您正在形成一个无效的地址,这是一个未定义的行为,但由于&
运算符取消了取消引用,因此没有取消引用NULL指针。