第2个回答 2015-01-11
#include <stdio.h>
main()
{
char *p="abcdefgh",*r;
long *q;
q=(long*)p;
q++;
r=(char*)q;
printf("%s\n",r);
printf("%d\n",sizeof(long));
}
输出结果是efgh,这里的关键是指针的偏移量问题,q是long,也就是四个字节 q++就移动了四个字节,指向了e所在位置。这个可能编译环境不同而不同,不过可以通过sizeof(long)来验证。