看板 C_and_CPP 關於我們 聯絡資訊
我只有學過java c跟c++學得很爛 現在都寫java 所以我指標也很爛 我在BSD UNIX的作者Bill Joy的演講 看到這個*p++ = *q++ 圖在這裡 http://i.imgur.com/3QSwcbZ.jpg https://youtu.be/rByrD_R9Vuo
影片的19分44秒左右投影片上的程式碼 所以想問*p++ = *q++ 是什麼意思 還是這個寫法不好 可是這個是BSD UNIX作者給的 讓我很想知道這個的意思 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.76.127 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1769187252.A.A08.html
ilovemami: *p = *q:把 q 抽屜的東西拿出來,放進 p 抽屜。 01/24 00:58
ilovemami: ++:搬完後,p 和 q 的指尖自動向後移一格 01/24 00:58
ilovemami: 複製現在這一格 然後兩邊都指到下一格 01/24 00:59
ttucse: 請問p跟q是陣列嗎? 01/24 01:08
ilovemami: p 和 q 是指標存放地址的變數 就兩隻手指 向陣列的開 01/24 01:11
ilovemami: 頭 01/24 01:11
ilovemami: 這行 code 執行時 手指會按順序一格格往後指 雖然陣列 01/24 01:11
ilovemami: 固定不動但指標(手指)可以透過 ++ 移動 01/24 01:11
ttucse: 懂了,謝謝。 01/24 01:17
peter98: ...... 01/26 08:27
peter98: 工作上誰敢寫這種code 我把他吊起來打 = = 01/26 08:28
pponywong: p[i++]=q[i++] 或是分兩行寫就好 現在編譯器會幫你做 01/26 11:35
pponywong: 最佳化 自以為聰明寫程式 會讓人看不懂 還有不一定符合 01/26 11:36
pponywong: 現在的硬體設計邏輯 01/26 11:36
pponywong: 你在80~90年代可以這樣寫 現在就不要學了 01/26 11:37
Lipraxde: p[i++]...還真少見 01/26 16:44
LPH66: p[i++]=q[i++] 這個才是全錯的寫法 01/26 19:28
LPH66: 正確的是要拆兩句 p[i] = q[i]; i++; 01/26 19:28
Richun: p[i++]=q[i++]不會踩到UB嗎? *p++ = *q++ 我知道不會 01/26 23:52
KyuubiKulama: 看投影片應該是講古介紹assembly idiom 對c的idio 01/27 01:36
KyuubiKulama: m影響? 01/27 01:36
hongsiangfu: 我會拆三行寫,*p=*q;++p;++q; 01/27 09:42
hongsiangfu: 星號不見了,自己腦部 01/27 09:42
lc85301: 我的腦部…不見了( 01/27 21:43
lc85301: 認真說 這種 code 在嵌入初始化 SRAM 的時候還滿常看到 01/27 21:44
bbbing: 就,拜託盡量還是用人話寫程式啦 01/28 11:20
if4: p[i++]=q[i++]指標會不一樣嗎?p[i++]=q[j++]有沒有必要寫這 01/29 07:30
if4: 樣 01/29 07:30
sarafciel: p[i++]=q[i++]踩UB了 語意也完全不一樣 01/29 08:02
LPH66: 就是 UB 才會說全錯,有時太機械地轉換就會掉進這種坑 01/30 16:45
chuegou: 推文+1 記憶體搬資料用 但這樣寫會讓我腦內打結 我也是 02/04 18:39
chuegou: 分三行 02/04 18:39