I come, I see, I conquer

                    —Gaius Julius Caesar

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
#include <stdio.h>
#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    ' '

posted on 2008-09-19 15:25  jcsu  阅读(2559)  评论(0编辑  收藏  举报