免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: sagasw
打印 上一主题 下一主题

[C] 《狂人C》一个不解处求教 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-12-22 20:56 |只看该作者
如果将 int i; 理解为一个维度为1的数组(这个需验证)  int a[1];
&i+1 即 &a[0]+1 是合法的
&i+2 即 &a[0]+2 是无定义的


我的想法就是这个

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
22 [报告]
发表于 2010-12-22 20:58 |只看该作者
回复 17# sagasw

>> 我个人觉得用数组来解释指针,跟用汇编解释C一样

这不一样, 前者是文档中明确写出了的。
标准原文见"数组名-1"那帖里的17楼。
这帖的15楼是对标准的解释。

论坛徽章:
0
23 [报告]
发表于 2010-12-22 20:58 |只看该作者
感觉没什么意思,到具体使用的时候自己结合具体情况使用就成了,何必这么纠结

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
24 [报告]
发表于 2010-12-22 21:03 |只看该作者
回复 21# KBTiller

将T x; 理解为 T a[1] 的依据呢?

标准那段话描述的是数组。
没有说单个object取址产生的指针是否可以 + offset。
标准其他地方有这样的描述么?

论坛徽章:
0
25 [报告]
发表于 2010-12-22 21:10 |只看该作者
回复 24# OwnWaterloo


    我当时也有你现在这样的想法,没有直接的依据
    也是思考了很久才这样写的
   (但我现在想不起来最后是什么让我确信简单的object也是如此了,容我慢慢回想一下.希望不是另一个“char”式的武断)

评分

参与人数 1可用积分 +1 收起 理由
OwnWaterloo + 1 理解若不能一步到位,中途的都是武断?

查看全部评分

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
26 [报告]
发表于 2010-12-22 21:24 |只看该作者
回复 25# KBTiller

不将 T x; 理解为 T a[1]; 而是 char a[sizeof(T)];
—— 任何一个object都可以当作一个char的数组。

这个虽然没有直接依据, 但如果不成立的话, malloc也不成立了。

那么, [ &a[0], &a[0]+sizeof(T) ) 是可解引用的。
&a[0]+sizeof(T) (即&x+1) 是合法的值, 但不可解引用。

论坛徽章:
0
27 [报告]
发表于 2010-12-22 21:49 |只看该作者
回复 24# OwnWaterloo


    +2明显不对,在我看来是显然的
    问题是+1
    模糊地记得
    当时看到过“左闭右开”的说法,但我没见过英文
    当时读到过单个变量与一个元素的数组行为相同(大意),英文权威出处(但忘记具体是什么出处了,当时还不懂得应该做笔记)

论坛徽章:
0
28 [报告]
发表于 2010-12-22 21:54 |只看该作者
回复  KBTiller

不将 T x; 理解为 T a[1]; 而是 char a;
—— 任何一个object都可以当作一个char的数组 ...
OwnWaterloo 发表于 2010-12-22 21:24

建议一个用a,另一个换个名字,比如 char b[sizeof(T)]
可能更容易阅读

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
29 [报告]
发表于 2010-12-22 22:42 |只看该作者
本帖最后由 gvim 于 2010-12-22 22:46 编辑

某段地址空间里面是对象的数据,就是合法的;不一定是对象的数据,就是合法但未定义的。通过语法检测的表达式都是合法的,但可能是未定义的
int i; &i+1 合法,但是下一个int类型的地址空间里的东西不是i的,&i+1就未定义,也就无意义。

论坛徽章:
0
30 [报告]
发表于 2010-12-22 22:53 |只看该作者
你这是原文吗?什么叫“确实只想一个int类型数据”。我猜想是因为如果i后存储的是一个double型的数据,你引 ...
Gude123 发表于 2010-12-22 16:30


re这个
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP