首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

long指针有关问题

2013-02-24 
long指针问题我复习时遇到了一个奇怪的问题。char buffer[ 517 ]long addr 0xbffff32along *ptrptr

long指针问题
我复习时遇到了一个奇怪的问题。
char buffer[ 517 ];
long addr = 0xbffff32a;
long *ptr;
ptr = ( long * )(buffer+20);
*ptr = addr;
printf( "%p\n", buffer[20] );
printf( "%p\n", buffer[21] );
printf( "%p\n", buffer[22] );
printf( "%p\n", buffer[23] );
按说结果应该是0xbf,0xff,0xf3,0x2a吧。可是结果却是0x2a, 0xfffffff3,0xffffffff,0xffffffbf,调试很长时间了,实在想不通为什么,求助大家,谢谢啦
[解决办法]
小端储存: 低地位的字节优先!  
所以刚好成了逆序··
[解决办法]
1、WININDOWS平台使用的是小端方案,和网络字节序的大端相反
2、这是因为32位程序,输出指针是长度是32位,
当把printf( "%p\n", buffer[21] ); 中的buffer[21]用%p输出时,因为buffer[21]是char型有符号字符,在以%p指针输出时,会转成32位数,这样0xf3就变成0xfffffff3 这个0xf3对应0xbffff32a红色部分,因为1中的说明。

热点排行