
main()
{
char *p="abcdefgh",*r;
long *q;
q=(long*)p;
q++;
r=(char*)q;
printf("%s\n",r);
}
楼主要明白各变量所占空间大小
#include "stdio.h"
main()
{
char *p="abcdefgh",*r;//首先定义了char指针,p在这里占8个
//字宽宏节,r未知
long *q;//long型占4个字节
q=(long*)p;//语句q=(long*)p进行了转换赋值,q首地址指向a
q++;//注意变量类神让型空间,此时q首地址指向慎瞎册e
r=(char*)q;//赋值,r为efgh
printf("%s\n",r);
}
char型占用一个字节 long型占用4个字节 所以q++后q实际上加袭察了4,其对应的就是e的地址,所以输出就是从e开始的字符efgh,这个程宽陪序就慎禅蠢是对指针不同类型的理解。
输出 "bcdefgh"