char* p = "1234"; // '1'的ASCII为0x31
int a = *( int* )p;
printf( "0x%08x", a );
结果为: _______________
0X34333231
我是这样弄出来的 char *p在内存里面的存储情况是把1234的ASCII马按顺序存储在内存中。
当把p付给a后 ,相当于a指向了p再内存中指向的位置。又因为a是整型,所以他的值占内存中由上到下4个字节的位置。而正好指针数组p的成员填满了那4个字节,因为a是int型,int型高位数存在内存的低地址处,所以4的ASCII码就是int的高位, 所以最后结果是34333231
回复射洪五金 14:06:18
我把程序改成这样
char *p = "12345678"; // '1'的ASCII为0x31
int* a = (int* )p;
a++;
printf( "0x%08x",*a );
得到的事5678的ASCII马 正好验证了这个