13465686375 发表于 2012-2-1 13:25:08

int *p=(*)(0xff);

int *p=(*)(0xff);
怎么解释 说下原理谢谢

haibin 发表于 2012-2-1 13:31:10

int *p=NULL;
p = (*)(0xff);
同上,
把0xff强制转换为指针并赋给整形指针变量p。

uc_efm32zg103 发表于 2012-2-1 13:39:39

int *p=(int *)0xff;

13465686375 发表于 2012-2-1 13:41:45

回复【1楼】haibin
int *p=null;
p = (*)(0xff);
同上,
把0xff强制转换为指针并赋给整形指针变量p。
-----------------------------------------------------------------------

这是指针变量的强制转换啊
如果*p=&i;
那么*(0xff)=&i;
即0xff=&i;

这样对吗?
把一个内存的地址强制转换为指针有啥用啊

ww880127 发表于 2012-2-1 15:05:43

回复【3楼】13465686375 keil
-----------------------------------------------------------------------

不对,*p=&i;代表的意思是,p变量存的是i的地址。
内存的地址强制转换为指针有啥用啊 ?
如果你想对内存的一个地址进行操作,不用指针怎么操作呢。
比如用单片机,你可以看见好多的寄存器,其实那都是编译环境给你集成好了。以avr的mega16为例
DDRB是个控制端口B方向的寄存器,为什么他就能控制,别的就不能呢
实际上DDRB只是一个符号,真正的定义是#define DDRB=*(volatile unsigned int *)0x04;

13465686375 发表于 2012-2-1 16:18:36

回复【4楼】ww880127
回复【3楼】13465686375 keil
-----------------------------------------------------------------------
不对,*p=&i;代表的意思是,p变量存的是i的地址。
内存的地址强制转换为指针有啥用啊 ?
如果你想对内存的一个地址进行操作,不用指针怎么操作呢。
比如用单片机,你可以看见好多的寄存器,其实那都是编译环境给你集成好了。以avr的mega16为例
ddrb是个控制端口b方向的寄存器,为什么他就能控制,别的就不能呢
实际上ddrb只是一个符号,真正的定义是#define ddrb=*(volatile unsigned int *)0x04;
-----------------------------------------------------------------------

噢 原来是这样 万分感谢

优享家 发表于 2014-4-13 15:31:16

ww880127 发表于 2012-2-1 15:05
回复【3楼】13465686375 keil
-----------------------------------------------------------------------
...

*rr =(int) (r * 0xff); 这个代码如何解释呢

优享家 发表于 2014-4-13 15:32:49

*rr =(int) (r * 0xff); 你好这个代码如何解释呢

binaimei2007 发表于 2014-4-13 15:49:40

本帖最后由 binaimei2007 于 2014-4-13 15:51 编辑

优享家 发表于 2014-4-13 15:32
*rr =(int) (r * 0xff); 你好这个代码如何解释呢

意思是将 r*0xff 强制转化为int类型,然后放到rr指向的地址内

优享家 发表于 2014-4-18 00:14:10

binaimei2007 发表于 2014-4-13 15:49
意思是将 r*0xff 强制转化为int类型,然后放到rr指向的地址内

那 r*0xff表示什么意思呢
页: [1]
查看完整版本: int *p=(*)(0xff);