- 空间积分
- 0
- 信誉积分
- 105
- UID
- 21859789
- 阅读权限
- 20
- 积分
- 237
- 帖子
- 95
- 精华
- 0
- 可用积分
- 237
- 专家积分
- 0
- 在线时间
- 13 小时
- 注册时间
- 2009-06-10
- 最后登录
- 2009-10-25

- 帖子
- 95
- 主题
- 2
- 精华
- 0
- 可用积分
- 237
- 专家积分
- 0
- 在线时间
- 13 小时
- 注册时间
- 2009-06-10
- 最后登录
- 2009-10-25
- 论坛徽章:
- 0
|
发表于 2009-07-02 18:26:09
|显示全部楼层
10可用积分
#include<stdio.h>
#include<string.h>
int main()
{
char a[4];
strcpy(a,"hello,world");
printf("%s\n",a);
printf("\n");
reuturn 0;
}
| 这个代码是可以运行的,而且会输出hello world,这是为什么呢?难道字符数组a会自动扩容? |
最佳答案
aaaaa5aa 查看完整内容
程序并不知道数组只有 4 个元素, 因此它也不知道对 a[5] 的访问已经超出了数组的边界; 程序只是「盲目的」按照你的指示从 a + 5 的位置上取值, 至于这个位置是否合法它不关心,
lz这样做已经造成溢出问题,下次多注意
|