免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: _HellAngel_

[C] 关于指针的地址运算符&(新手请教) [复制链接]

论坛徽章:
0
发表于 2012-12-20 11:16 |显示全部楼层
回复 44# pmerofc


    Memory:内存

通常情况下没有任何问题。有些事情纠结太深,反而不好。

@幻の上帝

内存与寄存器都可以按编号寻址,差别是内存的编号和寄存器的编号所指代的物理空间不一定相同。如果寄存器和内存条统一编址、或者重叠,编号指代的物理空间就相同;否则就不同。

Disk能不能看成是Memory?我看基本不能。因为我还没发现有某个系统的CPU可以直接对Disk进行IO,所以Disk属于外存。

什么是Memory?就是CPU能通过地址线直接寻址到的那个物理空间,也叫Primary Memory。不管是ROM、RAM还是FLASH等等,只要能被CPU通过地址线访问到,那就是一般意义上的Memory。对应到C语言里面,就可以用指针进行访问。比如传统BIOS ROM的某些部分被映射在内存空间里,这部分就属于Memory。

要由其他芯片中转才能访问到的都是Peripheral Device,Disk或者U盘都属于Peripherals。在某些语境下也可以把他们称之为Memory(Peripheral Memory),但是在涉及“指针”和“地址”的语境下,Memory只可能是Primary Memory。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
发表于 2012-12-20 11:41 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2012-12-20 12:05 |显示全部楼层
回复 52# pmerofc


    C语言不就对应了一个抽象机吗,一个只有运算器、控制器和内存的抽象机。类型和变量映射到内存,表达式对应到运算器,语句对应到控制器。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
发表于 2012-12-20 12:09 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
发表于 2012-12-20 21:03 |显示全部楼层
本帖最后由 Ager 于 2012-12-20 21:17 编辑
liuiang 发表于 2012-12-20 08:47
回复 49# Ager

  我觉得你的比喻太独道了,浅显易懂,深入人心啊,可以从最原始的潜意识方面激发人们对结合的理解。


谢谢大虾支持:)

哈哈,我还真没有把“结合性”与小动物交配联想在一起呢,因为,我认为“结合性”的“结合”是操作数与操作符的结合(而不是操作数与操作数的结合)。

不过,操作数与操作符的结合,总是伴随着与另一个操作数的结合。也就是说:
  1. L X R
复制代码
这样令操作数X在单目/缀性操作符L与R之间按结合性做出结合选择的例子,在C语言里,似乎还没有。

呵呵,期盼专业大虾们的验证与指教 …… :)

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
发表于 2012-12-20 21:13 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
操作系统版块每日发帖之星
日期:2015-08-05 06:20:0015-16赛季CBA联赛之北控
日期:2019-02-13 22:56:03
发表于 2012-12-20 21:21 |显示全部楼层
Ager 讲的相当详细

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
发表于 2012-12-20 21:32 |显示全部楼层
回复 34# Ager


    mark阿哥!

论坛徽章:
0
发表于 2012-12-21 18:30 |显示全部楼层
回复 51# sonicling


撇开寄存器什么的不管,对,按照习惯/常识/实际情况,ISO C里面讨论的memory只可能是primary memory,不可能是secondary memory。
但关键是ISO C里面找不到关于memory究竟是什么的只言片语。所以说这里memory含义的问题虽然看起来牵强,但不是无理。而且,没有明确排除寄存器,尤其是没能确凿地指出或让读者有可能严格地推论出memory“对应到C语言里面,就可以用指针进行访问”应该可以算个缺陷。

论坛徽章:
0
发表于 2012-12-21 18:39 |显示全部楼层
sonicling 发表于 2012-12-20 12:05
回复 52# pmerofc


如果是按ISO C说的,这个抽象机抽象的很不彻底,它的重点是介绍程序执行过程中表达式怎样被求值,以及和可观察行为的关系。其中的组成(这里说的运算器、控制器和内存)究竟是什么,没说,更别提怎么发挥作用/和语言构造对应了。(尽管ISO C++的也类似地没说这么细,但memory的概念什么的都是独立的,早就约定好了,自然不用从抽象机的方面去找它的精确的意义是什么。)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP