读书人

往指定地址写数据, 这个 [] 是什么?该

发布时间: 2012-04-15 18:39:21 作者: rapoo

往指定地址写数据, 这个 [] 是什么?

C/C++ code
    ((unsigned int volatile *) 0) [0x12abcdef] = 0x6369;         // 这个 [] 操作符在这里是什么意思? 和那个 0 一块儿构成数组指针么? 不知对不对?    // 汇编后为啥变成了往 0X4AAF37BC 这地址里写值! 这不就错了么?         /** 谢谢大家了! **/


[解决办法]
在起始位置,当作unsigned int指针使用,所以0x12abcdef的位置刚好是乘4,0X4AAF37BC
[解决办法]
由于前面的数据类型是unsigned int,在你的机器里面每个unsigned int 占用四个字节,因此((unsigned int volatile *) 0) [0x12abcdef]其实是0x12abcdef * 4 = 0x4AAF37BC这个地址

如果要实现往0x12abcdef里面写数据,使用((unsigned char volatile *) 0) [0x12abcdef] 就行了。但是你后面的0x6369是32位的,因此代码的原意应该就是往0x4AAF37BC里写四个字节吧。

读书人网 >C语言

热点推荐