首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过空指针的结构成员的地址

通过空指针的结构成员的地址
EN

Stack Overflow用户
提问于 2013-06-08 20:01:12
回答 4查看 2.4K关注 0票数 3

为什么下面的表达式不是(空指针)运行时错误?

代码语言:javascript
运行
复制
typedef struct{
           int a,b,c;
          } st;

st obj={10,12,15};
st *ptr1=&obj;
st *ptr2=NULL;

printf("%d",*(int *)((char*)ptr1+(int)&ptr2->b));
EN

Stack Overflow用户

发布于 2013-06-08 21:13:40

这是完全合法的用法,因为"take address of"-operator实际上意味着:“不要加载/存储变量的值,只需给我计算出的访问它的地址。”它在实际的未定义行为被调用之前停止访问。

这是编程中的一种典型用法,以至于它实际上被封装在offsetof()宏中(它在linux中使用得相当广泛),并且已经进入编译器本身,以提供更有意义的错误消息。有关更多详细信息,请参阅http://en.wikipedia.org/wiki/Offsetof,尽管我不同意这篇关于该语句合法性的文章。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16999329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档