Re: [問題] 指標的問題

看板C_and_CPP (C/C++)作者 (偉)時間16年前 (2009/07/23 21:52), 編輯推噓2(209)
留言11則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

07/23 22:02, , 1F
其實你可以用大E修改文章的XD
07/23 22:02, 1F

07/23 22:03, , 2F
str1與str2都只占有1個char, 所以嚴格來說你根本沒辦法
07/23 22:03, 2F

07/23 22:03, , 3F
讀入字串, 因為光放字串結數符號'\0'就沒空間放了.
07/23 22:03, 3F

07/23 22:04, , 4F
理論上a/b是對應獨立的空間, 不該互相覆蓋, 覆蓋發生了
07/23 22:04, 4F

07/23 22:04, , 5F
就極可能是你程式寫錯, 所以輸入一個卻多寫到另一個....
07/23 22:04, 5F

07/23 22:07, , 6F
可是我看str1和str2的記憶體位垃只差1
07/23 22:07, 6F

07/23 22:09, , 7F
str1與str2都是一個char, 中間沒有alignment的需求, 記
07/23 22:09, 7F

07/23 22:09, , 8F
憶體只差1也沒什麼不對吧.
07/23 22:09, 8F

07/23 22:09, , 9F
還有, 就是因為記憶體連續排在一起, 當你寫超過了前面的
07/23 22:09, 9F

07/23 22:09, , 10F
就自然可能覆蓋到後面的.
07/23 22:09, 10F

07/23 22:12, , 11F
謝謝你,我懂了
07/23 22:12, 11F
文章代碼(AID): #1AQ6iSen (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
0
2
完整討論串 (本文為第 2 之 2 篇):
0
2
文章代碼(AID): #1AQ6iSen (C_and_CPP)