我有这段代码。它似乎在这里取消引用空指针,但随后将结果与unsigned int
. 我真的不明白整个部分。它的目的是什么?这是指针算术的一种形式吗?
struct hi
{
long a;
int b;
long c;
};
int main()
{
struct hi ob={3,4,5};
struct hi *ptr=&ob;
int num= (unsigned int) & (((struct hi *)0)->b);
printf("%d",num);
printf("%d",*(int *)((char *)ptr + (unsigned int) & (((struct hi *)0)->b)));
}
我得到的输出是 44。但它是如何工作的?