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

str3 为什么只打印 9个a 不是有25个a 前面占用了6个 那不是还有19个a 19个a不是也把str3【10】占用了

也就是说 str【9】 本来应该是 ‘\0’  也被占用了  为什么只打印  9个a

提问者:慕斯卡3531659 2016-10-06 16:21

个回答

  • PriMayer
    2016-10-07 17:02:59
    已采纳

    前面说错了~~~~~

    输入25个a,str也是25个a,如下图:

    57f761e40001bc7d04430136.jpg

    下图中可以知道,str的在栈中地址是0x7fffffffde00。

    57f761e500014afa05000123.jpg

    当输入25个'a'时,内存中从0x7fffffffde00开始到0x7fffffffde18的25个内存单元中保存的都是输入的'a',在0x7fffffffde19保存的是'\0'。所以输出str时会输出25个'a';

    而str3在内存中的地址应该是0x7fffffffde10,由于从0x7fffffffde10到0x7fffffffde18保存了9个'a',在0x7fffffffde19保存的是'\0',所以输出str3时是从str3的地址0x7fffffffde10开始,就只有9个'a'了。

  • 慕斯卡3531659
    2016-10-07 09:21:43

    可是 str 的第10位置 也是a呀  不是  ‘\0’

  • PriMayer
    2016-10-07 02:48:41

    str3的長度爲10,不是3,寫錯啦

  • PriMayer
    2016-10-07 02:47:30

    str3的長度爲3,所以就是9個‘a’和一個‘\0’,其他的a還在後面。