慕斯卡3531659
2016-10-06 16:21
也就是说 str【9】 本来应该是 ‘\0’ 也被占用了 为什么只打印 9个a
前面说错了~~~~~
输入25个a,str也是25个a,如下图:
下图中可以知道,str的在栈中地址是0x7fffffffde00。
当输入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 的第10位置 也是a呀 不是 ‘\0’
str3的長度爲10,不是3,寫錯啦
str3的長度爲3,所以就是9個‘a’和一個‘\0’,其他的a還在後面。
Linux C语言指针与内存
116509 学习 · 250 问题
相似问题