回复 27楼 jklqwe111
其实我只想指出1楼代码中显式错误和你判断上的错误
仔细分析楼主代码,要达到楼主显示的效果,恰恰是要利用数组溢出才能达到的(你所说的边界),估计书本上是列举的16位系统,我的32位vc编译器不能演示,但做几处修改,仍然可以模拟出来。
1,s1、s2修改为数组,并互换位置 (或者把s1、s2定义为全局变量,不互换位置)
2,数组赋初值加长点(消除vc定义局部变量的内存对齐)
3,只对指针进行运算
修改后代码如下:
#include<stdio.h>
void main()
{
char s2[]="EFGHIJK",s1[]="ABCDEFG";
char *ps1=s1,*ps2=s2;
while(*ps1)
ps1++;
while(*ps1++=*ps2++);
printf("%s\n",s1);//输出为ABCDCDEF
printf("%s\n",s2);//输出为DEF
}
运行结果:
ABCDEFGEFGHIJK
FGHIJK