求教,

japt88_115656292 2012-05-06 11:59:08
#include <stdio.h>

int main()
{
int i=65535;
unsigned char *c;
c=(unsigned char *)&i;
printf("内存中存储情况:\n");
for (int n=0;n<4;n++)
printf(" 0x%x\t%02x\n",&i+n,c[n]);
printf("实际的16进制形式:\n");
printf(" 0x%08x\n",i);
return 0;
}

这段源程序,打出来的结果是

内存中存储情况:
0xbff2cf48 ff
0xbff2cf4c ff
0xbff2cf50 00
0xbff2cf54 00
实际的16进制形式:
0x0000ffff

我的疑问是
0xbff2cf48
0xbff2cf4c
0xbff2cf50
0xbff2cf54
每个地址之间为什么是加4?
是4个什么单位?
如何可以保存一个字节的数据? 实际大小是多少?
谢谢所有给出回答大牛.
...全文
62 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
japt88_115656292 2012-05-06
  • 打赏
  • 举报
回复
尽信书 不如无书,准备转c的伤不起.
printf(" 0x%x\tx\n",&i+n,c[n]);
&i+n的确有点瞎扯蛋,
换成&c[n]就好了.
刚才联系回了3帖子就不能继续回了,现在发现了
litter_man 2012-05-06
  • 打赏
  • 举报
回复
&i+n——>&(i+n)
japt88_115656292 2012-05-06
  • 打赏
  • 举报
回复
程序是从http://blog.csdn.net/qingkong8832/article/details/6688773 看到了,不过现在我觉得这个程序有问题了.
japt88_115656292 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

指针+n: 假定指针的类型为type, 相当于 地址值增加 n*sizeof(type);
int 在C++中占4字节;这个你可以把 int i;改成 short i;short是占二个字节,去实验一下。。

如何可以保存一个字节的数据? 实际大小是多少?这个我没看懂楼主你说的是什么意思,char 类型是占一个字节的。
[/Quote]
好像还是有点不太明白,
0xbff2cf48
0xbff2cf4c
为什么末尾从8变成c? 间隔了4, 这个4的单位是什么? 这4个空间保存了一个ff,确是一个字节的数据阿.
japt88_115656292 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

指针+n: 假定指针的类型为type, 相当于 地址值增加 n*sizeof(type);
int 在C++中占4字节;这个你可以把 int i;改成 short i;short是占二个字节,去实验一下。。

如何可以保存一个字节的数据? 实际大小是多少?这个我没看懂楼主你说的是什么意思,char 类型是占一个字节的。
[/Quote]
噢,对了,这个地址是指针的地址,不是把指针的数据存入这个地址中.
hen_hao_ji 2012-05-06
  • 打赏
  • 举报
回复
指针+n: 假定指针的类型为type, 相当于 地址值增加 n*sizeof(type);
int 在C++中占4字节;这个你可以把 int i;改成 short i;short是占二个字节,去实验一下。。

如何可以保存一个字节的数据? 实际大小是多少?这个我没看懂楼主你说的是什么意思,char 类型是占一个字节的。

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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