|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ c语言指针问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
710
人关注过本帖
标题:
c语言指针问题
只看楼主
加入收藏
avator123
等 级:
新手上路
帖 子: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
来 自:云南
等 级:
业余侠客
威 望:
1
帖 子:232
专家分:299
注 册:2008-10-17
第
2
楼
收藏
得分:10
ADDR_BASE 被定义为 0x00000010
*((volatile uint *) (ADDR_BASE + 0x0480))表示地址(0x00000010 + 0x0480)所保存的数据不是一个定值
努力改变一点点!!
2010-12-03 16:40
举报帖子
使用道具
赠送鲜花
avator123
等 级:
新手上路
帖 子:36
专家分:0
注 册:2010-12-3
第
3
楼
收藏
得分:0
(volatile uint *) (ADDR_BASE + 0x0480))不是表示地址(0x00000010 + 0x0480)所保存的数据吗?为什么还要加一个*
2010-12-03 16:45
举报帖子
使用道具
赠送鲜花
zxwangyun
来 自:云南
等 级:
业余侠客
威 望:
1
帖 子:232
专家分:299
注 册:2008-10-17
第
4
楼
收藏
得分:0
回复 3楼 avator123
(volatile uint *) (ADDR_BASE + 0x0480))是将数字 (ADDR_BASE + 0x0480)强制转换为一个地址值,且该地址内存放的数据不是一个定值
努力改变一点点!!
2010-12-03 16:53
举报帖子
使用道具
赠送鲜花
avator123
等 级:
新手上路
帖 子:36
专家分:0
注 册:2010-12-3
第
5
楼
收藏
得分: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
来 自:云南
等 级:
业余侠客
威 望:
1
帖 子:232
专家分:299
注 册:2008-10-17
第
6
楼
收藏
得分:0
ICU_BASE + 0x0480只是一个整数
现在抛开volatile不管,前面加(uint*)的作用就是将该数字强制转换为一个指针,只是该指针的值就是ICU_BASE + 0x0480,前面再加个*不就是该指针指向的数据了吗?
现在再把*((volatile uint *) (ADDR_BASE + 0x0480))连起来看,表示的就是ICU_BASE + 0x0480地址单元内的数据不是一个定值了吗?
努力改变一点点!!
2010-12-03 17:15
举报帖子
使用道具
赠送鲜花
avator123
等 级:
新手上路
帖 子:36
专家分:0
注 册:2010-12-3
第
7
楼
收藏
得分:0
谢谢,你很强。
2010-12-03 17:17
举报帖子
使用道具
赠送鲜花
lz1091914999
来 自:四川
等 级:
贵宾
威 望:
37
帖 子:2011
专家分:5959
注 册:2010-11-1
第
8
楼
收藏
得分: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
举报帖子
使用道具
赠送鲜花
8
1/1页
1
快速回复:
c语言指针问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.016748 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved