1、(unsigned long*)0x20000000;这个语句指的是什么意思?是把0x20000000定义成指针吗?
*0x20000000=2,表示的是将2放到0x20000000这个地址中?
2、(unsigned long*)0x20000000=2;这个赋值是错误的吧?
*(unsigned long*)0x20000000=2 这样赋值是正确的吧?
3、define P(unsigned long*)0x20000000 ;
*P=2;
与
Define P *(unsigned long*)0x20000000;
P=2;
这两者是等价的吧?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1 (unsigned long*)0x20000000;这个语句指的是什么意思?是把0x20000000定义成指针吗?
*0x20000000=2,表示的是将2放到0x20000000这个地址中?
答:(unsigned long*)0x20000000的意思,和楼上意见一致,就是强制类型转换,将0x20000000强制转换为指针,至于
*0x20000000=2,首先这个写法就是错误的,就算理解为将2放到0x20000000这个地址中,但是对于指向0x20000000这个地址的指针类型并没有指定,所以这个写法有问题,如果写为:*(unsigned long*)0x20000000 = 2;这就和过程说的那个意思一致了。
2(unsigned long*)0x20000000=2;这个赋值是错误的吧?
*(unsigned long*)0x20000000=2 这样赋值是正确的吧?
答:(unsigned long*)0x20000000=2;这个赋值的确是错误的,为什么错误,1中已经说过(unsigned long*)0x20000000是将0x20000000强制类型转换为指针,这里的这句代码在字面理解就是讲刚刚强制转换的一个指向0x20000000的指针转换为一个指向地址为0x2的地址的指针。这个是不允许的。
那么这句代码要怎么样就对了呢?改为 *(unsigned long*)0x20000000=2;就对了,为什么对?
刚才说了(unsigned long*)0x20000000已经相当于一个指针了,通过*号取指针指向地址的值就可以进行操作该地址处的数据了。
3 define P(unsigned long*)0x20000000 ;
*P=2;
与
Define P *(unsigned long*)0x20000000;
P=2;
答:这两句话是等价的(麻烦把代码写对,前面漏了#号,后面多了;号),为什么对?
宏就是替换的作用,上面两种写法就是把代码放在不同地方而已,并没有什么不同。
最后,以上解答均经过验证。有疑问随时反馈。 最佳答案
(unsigned long*)0x20000000;
*0x20000000=2;
这样赋值是正确的吧?
你给我解释下你为什么觉得正确
我是把0x20000000类似于这样
int *p;
*p=2;
不懂0x20000000 和指针一起搭配的用法
我是把0x20000000类似于这样
int *p;
*p=2;
不懂0x20000000 和指针一起搭配的用法
一周热门 更多>