相关疑难解决方法(0)

在C中明显的NULL指针取消引用实际上是指针算术吗?

我有这段代码.它似乎在这里取消引用空指针,但随后按位与结果和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)));  
}  
Run Code Online (Sandbox Code Playgroud)

我得到的输出是44.但它是如何工作的?

c struct offsetof pointer-arithmetic null-pointer

6
推荐指数
3
解决办法
1298
查看次数

如何在C中手动迭代堆栈帧?

在处理应用程序中的信号时,我可以在调试器中正确看到backtrace。但是backtrace系统调用未正确显示堆栈帧.gdb存储堆栈帧的方式和backtrace系统调用如何转储它们之间有区别吗?

c linux gcc gdb backtrace

2
推荐指数
1
解决办法
955
查看次数

标签 统计

c ×2

backtrace ×1

gcc ×1

gdb ×1

linux ×1

null-pointer ×1

offsetof ×1

pointer-arithmetic ×1

struct ×1