char 数组问题
#include <iostream.h>
#include <string.h>
void main()
{
char string[10], str1[10];
for(int i=0;i<11;i++)
{
str1[i] =97;
}
str1[11]='\0';
strcpy(string, str1);
cout<<str1<<endl;//结果是11个a,为什么可以输出这么多,输出12个就不行了
}
问题点数:20、回复次数:6Top
1 楼howyougen(夫孝,德之本也,教之所由生也)回复于 2006-03-19 13:07:52 得分 0
越界了Top
2 楼citywanderer2005(流浪狗)回复于 2006-03-19 13:13:06 得分 0
晕,楼主好好看看书啊Top
3 楼guangmingshizhe(光明使者(看《C++程序设计语言》))回复于 2006-03-19 13:29:54 得分 0
你定义的数组总共才10个大小Top
4 楼iwantfat(rock)回复于 2006-03-19 14:50:38 得分 20
#include <iostream.h>
#include <string.h>
void main()
{
char string[10], str1[10];
for(int i=0;i<19;i++)
{
str1[i] =97;
}
str1[19]='\0';
//strcpy(string, str1);
cout<<str1<<endl;//结果是19个a,了
}
-------------------
虽然数组越界,但是我们对没有分配的内存空间进行强行赋值,
一个潜在的危险就是,可能造成数据的破坏。所以不提倡,而且大多编译器禁止这种行为
也有编译器 会认为这个是正确的。 比如dev c++ 。str1[19]='\0';告诉说这个str1的长度是19
如果不加这个。前面的很可能是 20 或者25 之类。
Top
5 楼lingyuhuihui(凌雨)回复于 2006-03-19 16:15:29 得分 0
4楼不错,你完全理解我意思了Top
6 楼willingbupt(buptcsdn)回复于 2006-03-19 19:00:39 得分 0
结贴呀.楼上的 4楼正解Top




