往指定地址写数据, 这个 [] 是什么?该如何处理
往指定地址写数据, 这个 [] 是什么?C/C++ code((unsigned int volatile *) 0) [0x12abcdef] 0x6369//
往指定地址写数据, 这个 [] 是什么?
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里写四个字节吧。