小弟有C语言问题要请教。

来源:百度知道 编辑:UC知道 时间:2024/07/07 10:52:54
mian()
{ char *p="abcdefgh",*r;
long *q;
q=(long*)p;
q++;
r=(char*)q;
printf("%s\n",r);
}
请问为什么结果是efgh,想要求解过程。谢谢!

因为1个long是4个char的长度。

你一动一个long时,其实移动了4个char。

所以嘛,从e开始,不明白百度消息我。

char是一个字节,long是四个字节,q++的时候就跳过了四个字节,就是efgh了

指针q++,q一次移动几个字节,是和q所指向的数据类型有关的。

如char *q,那么q++一次就移动一个字节数(char型占一个字节)
若是int *q,那么q++一次就移动两个字节数(int型占两个字节)
这里是long *q,那么q++一次,就移动4个字节,因为long型占4个字节啦