[問題] 有人看過這種array的操作方式嗎?

看板C_and_CPP (C/C++)作者 (耐綸)時間13年前 (2013/04/10 22:01), 編輯推噓7(7019)
留言26則, 8人參與, 最新討論串1/1
因為程式碼有點長所以我稍微簡化一下內容取實際操作部份 #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

04/10 22:15, , 1F
...我想這個人是python 寫太多
04/10 22:15, 1F

04/10 22:19, , 2F
負數存取前面元素,不過看起來型態不合,有請其他高手了
04/10 22:19, 2F

04/10 22:28, , 3F
假設 p_int 是一個二維陣列的話, p_int[act][-1] 就是第
04/10 22:28, 3F

04/10 22:28, , 4F
act - 1 列的最後一欄
04/10 22:28, 4F

04/10 22:30, , 5F
照這段程式的話不合理, 因為 act = 0, 再上一列就越界了
04/10 22:30, 5F

04/10 22:30, , 6F
http://codepad.org/7MUmcceg 類似這樣寫才有意義吧
04/10 22:30, 6F

04/10 22:39, , 7F
原式不是這麼單純我只想簡化成它的操作
04/10 22:39, 7F

04/10 22:40, , 8F
我想問說像這樣子的操作有C的書或網站提到的嗎?
04/10 22:40, 8F

04/10 22:42, , 9F
那就只是指標的加減法而已,比較認真指標的書應該都會提
04/10 22:42, 9F

04/10 22:42, , 10F
p[1][-2] 等價於 *( *(p + 1) + (-2) )
04/10 22:42, 10F

04/10 22:43, , 11F
假設 p 記憶體位址 1000,在 32 位元下,p - 1 = 996 位址
04/10 22:43, 11F

04/10 23:08, , 12F
即使寫 p_int[1][-1] 也是 undefined behavior
04/10 23:08, 12F

04/11 00:04, , 13F
請問littleshan為什麼呢 purpose的_p_int[1][-1]所指向的
04/11 00:04, 13F

04/11 00:06, , 14F
還是在同一個陣列裡
04/11 00:06, 14F

04/11 00:08, , 15F
這是未定義的行為嗎 更正: p_int[1][-1]
04/11 00:08, 15F

04/11 00:16, , 16F
http://tinyurl.com/ckbkrj2 陣列 iNumberArray 的邊界是
04/11 00:16, 16F

04/11 00:16, , 17F
0 跟 1023 所以 iNumberArray[-1] 跟 iNumberArray[1024]
04/11 00:16, 17F

04/11 00:17, , 18F
越界,結果難預期。但 iNumberLine 指向陣列中間故可負數
04/11 00:17, 18F

04/11 00:26, , 19F
undefined behavior大概是指語言定義的層面? @@
04/11 00:26, 19F

04/11 00:32, , 20F
就算predictable 還是undefined 吧
04/11 00:32, 20F

04/11 00:32, , 21F
我覺得既然不是在寫python 就不要寫出這種code就好囉
04/11 00:32, 21F

04/11 00:34, , 22F
C給使用者很多方便 也造成很多麻煩阿...
04/11 00:34, 22F

04/11 09:08, , 23F
C 陷阱与缺陷 section 3.1
04/11 09:08, 23F

04/11 09:09, , 24F
那個 -1 有問題吧, 已經越過 array 邊界了
04/11 09:09, 24F

04/11 09:11, , 25F
04/11 09:11, 25F

04/11 10:39, , 26F
sorry我指的是uranusjr的推文,二維陣列的情況不能[-1]
04/11 10:39, 26F
文章代碼(AID): #1HPN3B8h (C_and_CPP)
文章代碼(AID): #1HPN3B8h (C_and_CPP)