代码:
#include <stdio.h>
int main()
{
char a[] = "123456789";
char b[]="1234";
strcpy(b,a);
printf("%s\n%s",a,b);
return 0;
}
问题:最终打印什么?
答:
原因:
程序的数据段的存储问题:程序中的数据存放在数据段,并且从高到低依次存取,所以a数组的在b数组的下面,当b数组被赋值以至于越界时,就把a中元素破坏,导致a数组变化,有一点疑问:在b变化间接导致a首地址变化后,a的首地址是怎么再次确定的?
编译原理,统统还给老师了。⊙﹏⊙b汗