作者ledwei (伟)
看板C_and_CPP
标题Re: [问题] 指标的问题
时间Thu Jul 23 21:52:25 2009
※ 引述《ledwei (伟)》之铭言:
: 请问一下
: int main()
: {
: char str1,str2;
: char *a=&str1,*b=&str2;
cin >> a;
cin >> b;
cout << a;
return 0;
: }
: 假设我输入a,然後在输入b
: 这样b字串,有可能把a字串
: 覆盖吗?
: 还有一个问题
: 为什麽我打&str1印出来是空白
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.156.10
1F:推 VictorTom:其实你可以用大E修改文章的XD 07/23 22:02
2F:→ VictorTom:str1与str2都只占有1个char, 所以严格来说你根本没办法 07/23 22:03
3F:→ VictorTom:读入字串, 因为光放字串结数符号'\0'就没空间放了. 07/23 22:03
4F:→ VictorTom:理论上a/b是对应独立的空间, 不该互相覆盖, 覆盖发生了 07/23 22:04
5F:→ VictorTom:就极可能是你程式写错, 所以输入一个却多写到另一个.... 07/23 22:04
6F:→ ledwei:可是我看str1和str2的记忆体位垃只差1 07/23 22:07
7F:推 VictorTom:str1与str2都是一个char, 中间没有alignment的需求, 记 07/23 22:09
8F:→ VictorTom:忆体只差1也没什麽不对吧. 07/23 22:09
9F:→ VictorTom:还有, 就是因为记忆体连续排在一起, 当你写超过了前面的 07/23 22:09
10F:→ VictorTom:就自然可能覆盖到後面的. 07/23 22:09
11F:→ ledwei:谢谢你,我懂了 07/23 22:12