小端系统地址访问
2014-09-20 16:00
120 查看
有这么一道笔试题:
struct data
{
int a;
short s;
};
int main()
{
struct data d;
d.s=0x0102;
char *p=&d
printf("%d"(int)(*(p+4)));
}
栈是由高地址向低地址增长,加入cout<<&d<<endl<<&d.a<<endl<<&d.s<<endl测试,
输出结果:0x001FF808
0x001FF808
0x001FF80C
说明结构体内,定义顺序从上到下对应地址从低到高, a是从0x001FF808开始存储,s是从0x001FF80C开始存储,但是要注意:a和s都是低位存到低地址,高位存到高地址,
p+4时移动到0x001FF80C,也就是s的低位,应该是2,而不是0
附:
int endian( void )
{
union
{
int i;
char a;
}e;
e.i=1;
return e.a==1;
}
如果系统是小端则返回1,大端返回0;
struct data
{
int a;
short s;
};
int main()
{
struct data d;
d.s=0x0102;
char *p=&d
printf("%d"(int)(*(p+4)));
}
栈是由高地址向低地址增长,加入cout<<&d<<endl<<&d.a<<endl<<&d.s<<endl测试,
输出结果:0x001FF808
0x001FF808
0x001FF80C
说明结构体内,定义顺序从上到下对应地址从低到高, a是从0x001FF808开始存储,s是从0x001FF80C开始存储,但是要注意:a和s都是低位存到低地址,高位存到高地址,
p+4时移动到0x001FF80C,也就是s的低位,应该是2,而不是0
附:
int endian( void )
{
union
{
int i;
char a;
}e;
e.i=1;
return e.a==1;
}
如果系统是小端则返回1,大端返回0;
相关文章推荐
- 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。
- 配置Apache地址为外部系统访问提供服务
- 在Window系统中如何让程序中访问3G虚拟地址
- 在linux系统中的shell命令下如何访问一个url地址呢?
- 关于企业内部系统访问地址的一些思考
- Centos系统thinkphp发布时,apache配置成https访问时,url地址无法访问问题
- 当jira更换了访问地址后,bamboo 无法从jira加载用户导致系统无法使用
- android 下载 修改linux 系统的/etc/hosts 中的访问地址
- 使用Mmap系统调用进行硬件地址访问
- 在单片机系统上的绝对地址访问问题
- 取得系统中网卡MAC地址的三种方法
- IT学习者网站访问统计系统 Ver 1.6的BUG
- 基于角色管理的系统访问控制(来源: ibm 作者: 郝斌 )
- [译]获取系统网络MAC地址的三种方法
- 在VC++中访问和修改系统注册表 作者:陈伟
- Java访问系统剪贴板
- 利用session对象防止未授权用户访问系统页面
- 给你的系统增加对物理地址的验证
- 在VC++中访问和修改系统注册表
- 在VC++中访问和修改系统注册表