为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

4 回答

前面说错了~~~~~

输入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'了。

1 回复 有任何疑惑可以回复我~
#1

慕斯卡3531659 提问者

在0x7fffffffde19保存的是'\0' 为什么不是a a为什么没有覆盖掉这个东西
2016-10-08 回复 有任何疑惑可以回复我~
#2

小白来求教 回复 慕斯卡3531659 提问者

输入的25个a中的最后一个a的地址就是...fffde18 ,所以后面没有a了
2016-10-27 回复 有任何疑惑可以回复我~
#3

小白来求教

为什么 str开始地址是...fffde00 而str3开始地址是....ffffde10 中间为什么差了16和字节,它俩在栈中应该是连续存储的啊 为什么是16个字节呢
2016-10-27 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

慕斯卡3531659 提问者

可是 str 的第10位置 也是a呀 不是 ‘\0’
2016-10-07 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信