#include <string.h>
main()
{
char s[]="123456789";
char d[]="123";
strcpy(d, s);
printf("%s \n%s \n", d, s);
return 0;
}
输出:
123456789
56789
分析:
以上代码在VC环境下运行。调试运行,内存状态如下:
step1. 运行完char s[]="123456789";后的内存:
0012FF70 CC CC CC CC 31 32 33 34 35 36 37 烫烫1234567
0012FF7B 38 39 00 CC CC C0 FF 12 00 D9 13 89.烫......
step2. 运行完char d[]="123";后的内存:
0012FF70 31 32 33 00 31 32 33 34 35 36 37 123.1234567
0012FF7B 38 39 00 CC CC C0 FF 12 00 D9 13 89.烫......
step3. 运行完strcpy(d, s);后的内存:
0012FF70 31 32 33 34 35 36 37 38 39 00 37 123456789.7
0012FF7B 38 39 00 CC CC C0 FF 12 00 D9 13 89.烫......
变量的观察值如下:
- d 0x0012ff70 "123456789"
[0] 49 '1'
[1] 50 '2'
[2] 51 '3'
[3] 52 '4'
- s 0x0012ff74 "56789"
[0] 53 '5'
[1] 54 '6'
[2] 55 '7'
[3] 56 '8'
[4] 57 '9'
[5] 0 ' '
[6] 55 '7'
[7] 56 '8'
[8] 57 '9'
[9] 0 ' '