| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 710 人关注过本帖
标题:c语言指针问题
只看楼主 加入收藏
avator123
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-12-3
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:7 
c语言指针问题

#define ADDR_BASE        0x00000010
#define ICGU     *((volatile uint *) (ADDR_BASE + 0x0480))

随能给解释一下#define ICGU     *((volatile uint *) (ADDR_BASE + 0x0480)),本人刚学c




[ 本帖最后由 avator123 于 2010-12-3 16:10 编辑 ]
搜索更多相关主题的帖子: c语言 指针 
2010-12-03 16:07
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
收藏
得分:10 
ADDR_BASE 被定义为 0x00000010
*((volatile uint *) (ADDR_BASE + 0x0480))表示地址(0x00000010 + 0x0480)所保存的数据不是一个定值


努力改变一点点!!
2010-12-03 16:40
avator123
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-12-3
收藏
得分:0 
(volatile uint *) (ADDR_BASE + 0x0480))不是表示地址(0x00000010 + 0x0480)所保存的数据吗?为什么还要加一个*
2010-12-03 16:45
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
收藏
得分:0 
回复 3楼 avator123
(volatile uint *) (ADDR_BASE + 0x0480))是将数字 (ADDR_BASE + 0x0480)强制转换为一个地址值,且该地址内存放的数据不是一个定值

努力改变一点点!!
2010-12-03 16:53
avator123
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-12-3
收藏
得分:0 
(volatile uint *) (ADDR_BASE + 0x0480))是将数字 (ADDR_BASE + 0x0480)强制转换为一个指向unit的指针,且该地址内存放的数据不是一个定值,相当于volatile uint * (ADDR_BASE + 0x0480)

然后再用指针取值运算符 * 操作内存的值,即相当于 *((volatile uint *) (ADDR_BASE + 0x0480))

这样理解应该没错吧!
2010-12-03 17:11
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
收藏
得分:0 
ICU_BASE + 0x0480只是一个整数
现在抛开volatile不管,前面加(uint*)的作用就是将该数字强制转换为一个指针,只是该指针的值就是ICU_BASE + 0x0480,前面再加个*不就是该指针指向的数据了吗?
现在再把*((volatile uint *) (ADDR_BASE + 0x0480))连起来看,表示的就是ICU_BASE + 0x0480地址单元内的数据不是一个定值了吗?

努力改变一点点!!
2010-12-03 17:15
avator123
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-12-3
收藏
得分:0 
谢谢,你很强。
2010-12-03 17:17
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:10 
*((volatile uint *) (ICU_BASE + 0x0480)) //这句的意思是把宏ICU_BASE + 0x0480的值(编译器优化为int型)强制转换为不会被编译器优化无符号int型的常指针
//由于该指针是指向单个数据单位的指针,所以是获得了以ICU_BASE + 0x0480这个内存地址开始的4个字节的内容,并解析为unsigned int 型

My life is brilliant
2010-12-04 01:10
快速回复:c语言指针问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016748 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved