亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請問下數組 int array[2] 應該只有array[0] array[1]啊

怎么會出現array[2]? ?

正在回答

2 回答

這是因為int array[2]還有一個為'\0'的結束數組符,而int array[]={0,1}則沒有'\0'這個結束符

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

xpsion 提問者

非常感謝!
2015-10-11 回復 有任何疑惑可以回復我~
#2

onemoo

只有字符串形成的數組才會在尾端添加一個'\0'字符,其他類型的數組不會這樣。 課程中的代碼是問題的!
2015-10-11 回復 有任何疑惑可以回復我~
#3

HiJacker

上上一次還是上一次的視頻里面有標注:array[2]應該改為array[3],是老師做視頻的時候疏忽打錯了
2017-05-19 回復 有任何疑惑可以回復我~

LS的回答有問題,原因請看我給他的回復。


確實不應該有 array[2]。課程中這樣的寫法有嚴重的安全隱患。

剛看了一眼課程代碼,發現他的for循環也有問題,C標準不保證a b i 與array數組在內存中緊挨著,所以for中指針p可能取到無意義值。 C標準只保證數組中的元素緊挨著。

這講師真坑人...

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

qq_翔麟_0

不同類型不同分配,不會造成abi非緊挨的狀況,分配是有一個先后順序的,去仔細看看內存分配和GCC優化再來說話
2017-03-15 回復 有任何疑惑可以回復我~
#2

onemoo 回復 qq_翔麟_0

C標準可并沒有對棧內存模型進行規定,唯一能確定的是數組中的元素是緊密相鄰的,除此之外我們不能進行任何假定。 我覺得寫代碼應該盡可能嚴格地按照C標準來,不應該依賴某些編譯器的行為,因為有可能在別的平臺上的編譯器就不是這樣實現的——尤其是在C教學時更應該嚴謹。
2017-03-17 回復 有任何疑惑可以回復我~
#3

qq_翔麟_0 回復 onemoo

我的天誒,你打字不累么(¬_¬)
2017-03-18 回復 有任何疑惑可以回復我~
#4

onemoo 回復 qq_翔麟_0

既然是在問答平臺里交流,那么我希望至少能寫些有意義的回答。我不愿意給出沒價值、抖機靈的回復,所以一般字數都不會太少,但還不至于累……
2017-03-19 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消
Linux C語言指針與內存
  • 參與學習       116652    人
  • 解答問題       262    個

指針-C語言的核心,代領大家對c語言有更加深刻的理解

進入課程

請問下數組 int array[2] 應該只有array[0] array[1]啊

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號