看板 C_and_CPP 關於我們 聯絡資訊
因為程式碼有點長所以我稍微簡化一下內容取實際操作部份 #define size 10 unsigned int *p_int[size]; size_t log=0; size_t act=0 p_int[log][3 + 0] = 0; p_int[act][-1] = 0; 有人看過類似的操作嗎? 如果有的話我想問有參考的書或網址嗎? 因為我搞不懂它到底作了什麼? -- 「不需要讓青少年有判斷力和批判力。只要給他們汽車、摩托車、美麗的明星、刺激的音 樂、流行的服飾,以及對同伴的競爭意識就行了。剝奪青少年的思考力,根植他們服從指 導者命令的服從心才是上策。讓他們對批判國家、社會和指導者保持著一種動物般原始的 憎惡。讓他們深信那是少數派和異端者的罪惡。讓他們都有同樣的想法。讓他們認為想法 和大家不同的人就是國家的敵人……」 by 阿道夫·希特勒 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 39.12.251.168
singlovesong:...我想這個人是python 寫太多 04/10 22:15
Minilogo:負數存取前面元素,不過看起來型態不合,有請其他高手了 04/10 22:19
uranusjr:假設 p_int 是一個二維陣列的話, p_int[act][-1] 就是第 04/10 22:28
uranusjr:act - 1 列的最後一欄 04/10 22:28
uranusjr:照這段程式的話不合理, 因為 act = 0, 再上一列就越界了 04/10 22:30
purpose:http://codepad.org/7MUmcceg 類似這樣寫才有意義吧 04/10 22:30
e12518166339:原式不是這麼單純我只想簡化成它的操作 04/10 22:39
e12518166339:我想問說像這樣子的操作有C的書或網站提到的嗎? 04/10 22:40
purpose:那就只是指標的加減法而已,比較認真指標的書應該都會提 04/10 22:42
purpose:p[1][-2] 等價於 *( *(p + 1) + (-2) ) 04/10 22:42
purpose:假設 p 記憶體位址 1000,在 32 位元下,p - 1 = 996 位址 04/10 22:43
littleshan:即使寫 p_int[1][-1] 也是 undefined behavior 04/10 23:08
Minilogo:請問littleshan為什麼呢 purpose的_p_int[1][-1]所指向的 04/11 00:04
Minilogo:還是在同一個陣列裡 04/11 00:06
Minilogo:這是未定義的行為嗎 更正: p_int[1][-1] 04/11 00:08
purpose:http://tinyurl.com/ckbkrj2 陣列 iNumberArray 的邊界是 04/11 00:16
purpose:0 跟 1023 所以 iNumberArray[-1] 跟 iNumberArray[1024] 04/11 00:16
purpose:越界,結果難預期。但 iNumberLine 指向陣列中間故可負數 04/11 00:17
suhorng:undefined behavior大概是指語言定義的層面? @@ 04/11 00:26
singlovesong:就算predictable 還是undefined 吧 04/11 00:32
singlovesong:我覺得既然不是在寫python 就不要寫出這種code就好囉 04/11 00:32
singlovesong:C給使用者很多方便 也造成很多麻煩阿... 04/11 00:34
descent:C 陷阱与缺陷 section 3.1 04/11 09:08
descent:那個 -1 有問題吧, 已經越過 array 邊界了 04/11 09:09
descent:http://goo.gl/548SQ 04/11 09:11
littleshan:sorry我指的是uranusjr的推文,二維陣列的情況不能[-1] 04/11 10:39