C中内存地址的问题。

hnflavor 2003-03-30 09:19:19
假设现在知道了段地址和偏移地址为0b000:0020

程序如下:
#include<stdio.h>
#include<dos.h>
main()
{
char far *p;
unsigned seg,off;
p=MK_FP(0xb000,0x20); //这么的x是怎么来的啊?
……;
……;
}
...全文
32 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
0738111080 2003-03-30
  • 打赏
  • 举报
回复
是16位数字的前缀,没有别的用了
就表示16进值
hnflavor 2003-03-30
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<dos.h>
main()
{
char far * p;
unsigned seg,off;

p=MK_FP(0xb000,0x20);
seg=FP_SEG(p);
off=FP_OFF(p);

printf("far p %p,segment%04x,offset%0x\n",p,seg,off);
}

按理说,最后输出应该是far p b000:0020,segment b000,offset 0020
为什么我这个程序的输入far p 0020,segment b000,offset b000
chrix 2003-03-30
  • 打赏
  • 举报
回复
通常以0开头数字表示是8进制,
0x开头表示16进制
hnflavor 2003-03-30
  • 打赏
  • 举报
回复
那如果段地址和偏移地址换成E2300:B300

那程序中是不是p=MK_FP(0xE2300,0xB300)啊?
  • 打赏
  • 举报
回复
0x在c中表示16位数字的前缀

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧