关于for循环的问题

char str1[10]="cat";
int i=0;

for(;i<10;i++)
printf("%c %d\n",str1[i],i);

为什么不能循环到10呢??
不能到str1[4]
不是不能到10 说错了

第1个回答  2012-07-19
因为只有str1中只存了3个字节的东西,str1的大小就是4,不是10,

for(;i<str1.length();i++)
printf("%c %d\n",str1[i],i);本回答被网友采纳
第2个回答  2012-07-19
因为数组是从0开始的,所以0-9已经就是10个元素了,
而你数组定义的大小是10,随意只能到9,到10就11个元素了追问

你运行一下我这个程序 你就知道我想问的是什么意思了

追答

你数组后面其余都是'\0',当然输出不了

追问

我这里的显示结果是
c 0
a 1
t 2

就这几个而已

追答

可能和编译器什么的有关吧,这个不知道你是不是VC6.0

追问

呵呵 编译器有一定的原因 但是 或许不是全部
我换了XP后 运行就没有异常了

追答

呵呵,那就是系统问题了

本回答被提问者采纳
第3个回答  2012-07-19
你这个数组里面cat只有三个字节,后面的默认为0,所以循环了也没意义
第4个回答  2012-09-26
前3个是非0字符,是可以打印出来的,但是后面7个都是值为0的结尾字符‘\0’,0当成字符打印是不会打印出来的,你可以当成整形打印出来,那就是0了
第5个回答  2012-07-19
数组的定义,str1[10]中的10为元素个数,从0到9,所以str1[i] 中 i 只能到9
相似回答