| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 484 人关注过本帖
标题:求这条语句意思
只看楼主 加入收藏
nick_blood
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-9-1
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
求这条语句意思
#define RAM_test (*(unsigned short int*)0x270000)
搜索更多相关主题的帖子: 语句 
2009-09-01 09:18
prankmoon
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
收藏
得分:6 
这是定义一个宏,而不是语句,因为显然它没有分号。
                                                                  .
这个宏是要取地址0x270000处的值,该值为unsigned short int类型。这个宏的意思可以这样拆分:
<1> (unsigned short int*)0x270000:表示把0x270000当作指向unsigned short int类型的指针;
<2> *(unsigned short int*)0x270000:表示取出<1>中指针所指向的值。
                                                                  .
举一个例子:
unsigned short int k = 5;
unsigned short int *p = &k;
                                                                  .
此时的p就相当于问题中的0x270000,*(unsigned short int*)p就正是表示k的值5。
                                                                  .
不妨再看看如下代码(VC6 + Debug方式):
#include <stdio.h>
#include <stdlib.h>
                                                                  .
#define RAM_test (*(unsigned short int*)0x270000)
                                                                  .
int main(void)
{
                                                                  .
    printf("%08X\n", RAM_test);
                                                                  .
    return 0;
}
在printf函数行下断点,查看内存地址0x270000处:
00270000  55 00 0C 03 75 00 04 03  U...u...
可以看到该地址处的unsigned short int类型的值为0x0055(short型占2字节),所以最终输出结果:00000055。
                                                                  .
说明:不同的环境,测试的结果可能不同。因为0x270000处的值并未在别的地方设定,所以,应为一内存处的未定义值。

[ 本帖最后由 prankmoon 于 2009-9-1 21:05 编辑 ]
2009-09-01 21:01
ljt0000mf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:157
注 册:2009-7-4
收藏
得分:6 
prankmoon厉害啊。
受教了
2009-09-01 21:57
chao1573
Rank: 2
等 级:论坛游民
帖 子:23
专家分:28
注 册:2007-6-28
收藏
得分:6 
顶一楼,受教了
2009-09-02 23:02
快速回复:求这条语句意思
数据加载中...
 
   



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

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