问答详情
源自:5-4 字符数组的深入理解

str3长度是10,为什么输入那么多a,还能全都输出,不应该是9个a吗?

str3长度是10,为什么输入那么多a,还能全都输出,不应该是9个a吗?http://img.mukewang.com/590458a4000142a903960143.jpg

提问者:慕仙2073536 2017-04-29 17:13

个回答

  • _百慕大
    2017-04-29 17:51:38

    其实吧,给char数组赋值时,是一个char一个char赋的,

    虽然规定的是宽度是10,但只是规定了str3最后一个char即str3[9]为'\0',

    当我们手工赋值时,赋了一大串的a,如:str3[0]='a',str3[1]='a'...str3[9]='a',str3[10]='a'...,在这里就把str3[9]给改成了'a'

    输出时,其实是指针的移动,在没遇到'\0'前是一直不会结束的,在内存中大多数空间都为'\0',所以可以结束输出,即题主所给出的图片所示,

    当然,有时候遇到了不是'\0'的,会把它的ascii码输出,如:在这一串a最后下一个字节中存的是'b',而再下一个是'\0'的话,就会输出一大串a加上一个b后结束输出