字符串截取问题

#include <iostream>
#include <stdio.h>
int main(void)
{
     char s[]="123456789";
     char d[]="123";
     strcpy(d,s);
     printf("%s,%s",d,s);
     return 0;
}
结果:
123456789,56789
解析:
在内存中分配如下:
copy前      copy后
b->1 ------> 1
     2            2
     3            3
     \0           4
s->1 ------> 5
     2            6
     3            7
     4            8
     5            9
     6            \0
     7            7
     8            8
     9            9
     \0          \0
在栈中,变量是分配是按照栈低到栈顶的,栈低地址比栈顶地址大,因为b分配空间不够,因此,在copy时向下占据a空间,则copy后内存分配如上图。
posted @ 2015-08-26 16:06  striver_zhu  阅读(164)  评论(0编辑  收藏  举报