|
发表于 2014-7-3 09:22:36
|
显示全部楼层
本帖最后由 流行语 于 2014-7-3 09:35 编辑
- #include<stdio.h>
- main()
- {
- char *p="jklmnopqrstuvwxy";
- int *t=(int *)p;
- printf("p=%x\n",p);
- printf("t1=%x\n",t);
- t=t+1;
- printf("t2=%x\n",t);
- printf("t3=%x\n",t+1);
- printf("p8=%x\n",p+8);
- printf("p8=%s\n",p+8);
- printf("%x\n",*(t+1));
- printf("r=%d,s=%d,t=%d,u=%d\n",'r','s','t','u');
- }
复制代码 我用的是vc++6.0测试的,我的机器整形占用4个字节,字符占用1个字节。我测试结果输出是75747372。因为t+1最后指向的地址是从r地址开始,占有4个字符即“rstu”,而这4个字符的ascii码分别是114(0111 0010),115(0111 0011),116(0111 0100),117(0111 0101),在输出时输出4个字节的内容,可是我的机器中的字节排序是从右到左,即“utsr”,所以最后输出75747372(从低字节到高字节),如果你的机器输出顺序从左到右,则结果为72737475(从高字节到低字节)。 |
|