免费注册 查看新帖 |

Chinaunix

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

给内存地址"0x123456789"赋值为0,请写出代码 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2010-03-08 20:54 |显示全部楼层
题目:给内存地址"0x123456789"赋值为0,请写出代码

我的做法是
int *p;
p = 0x123456789;
*p =  ...
gigabyte 发表于 2010-03-07 21:45


访问绝对地址(就是以数字给定的具体地址)是有很多限制的。
1)链接器是不是允许这样做?譬如单片机一般是可以的,其它或多或少有些问题。
2)与系统是否有冲突?一般是低地址。
3)0x123456789,已经超过32位了,你是什么机器?什么系统?

论坛徽章:
0
2 [报告]
发表于 2010-03-10 19:58 |显示全部楼层
请教一下,在code中用绝对地址对一个指针赋值并随之访问这个地址,跟链接器有什么关系呢?
谢谢!
new_learner 发表于 2010-03-09 16:13


本来,地址都是链接器出的,现在你要加一点手工的。自动加手工,在许多场合都要出问题的。一台自动车床在自动运行,你硬要插一手,多半会切断你的手指。呵呵。

论坛徽章:
0
3 [报告]
发表于 2010-03-11 20:01 |显示全部楼层
谁告诉你地址链接出来的?需要链接的是全局符号,比如全局变量、函数等等。不是全局的,私有的,就 ...
iamybj 发表于 2010-03-11 12:08


哈哈,如果自动变量也给它个具体地址,那更好玩了。你先看清原帖吧。

论坛徽章:
0
4 [报告]
发表于 2010-03-11 20:08 |显示全部楼层
回复  bukkake


   64位机器的int也是64位的,,一般来说int和cpu的字长相同
iamybj 发表于 2010-03-11 12:06


过去8位机上的C编译器,int多数是16位的,因为8位太短,不实用。但也有例外,有些用于控制的C编译器,是8位的。
64位编译器也有32位int的。
一句话,因需而定。

论坛徽章:
0
5 [报告]
发表于 2010-03-11 20:13 |显示全部楼层
我看见几个单片机C编译器,允许直接指定地址。单片机也有这需要。
但是,你得熟悉硬件,熟悉存储分配,特别是系统特有的那些。你得自己确保程序内地址不要打仗,更不要和系统打仗。

论坛徽章:
0
6 [报告]
发表于 2010-03-17 18:51 |显示全部楼层
哪个C编译器不能直接指定地址?......
cjaizss 发表于 2010-03-15 12:31



我说“看见几个单片机C编译器,允许直接指定地址”,你就要我拿出“哪个C编译器不能直接指定地址”。2010年了,你还是这么可爱?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP