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

来源:5-4 字符数组的深入理解

慕斯卡3531659

2016-10-06 16:21

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

写回答 关注

4回答

  • 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'了。

    小白来求教

    为什么 str开始地址是...fffde00 而str3开始地址是....ffffde10 中间为什么差了16和字节,它俩在栈中应该是连续存储的啊 为什么是16个字节呢

    2016-10-27 11:16:58

    共 3 条回复 >

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

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

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

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

    慕斯卡353...

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

    2016-10-07 09:22:09

    共 1 条回复 >

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

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

Linux C语言指针与内存

指针-C语言的核心,代领大家对c语言有更加深刻的理解

116509 学习 · 250 问题

查看课程

相似问题